我有一个NDK共享库,我想对它进行一些测试。我目前使用googletest创建链接到库的本机可执行文件,遵循README.NDK中的说明。虚拟可执行文件可以在Android模拟器上运行。好。
现在,棘手的是共享库调用了JNIEnv实例的许多函数,例如:
问题是,Android本机可执行文件如何获取JNIEnv的实例?
一种方法是使用下面描述的调用API。 http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html
但是,我查看了NDK的jni.h,似乎不允许使用此API:
/*
* VM initialization functions.
*
* Note these are the only symbols exported for JNI by the VM.
*/
#if 0 /* In practice, these are not exported by the NDK so don't declare them */
jint JNI_GetDefaultJavaVMInitArgs(void*);
jint JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*);
jint JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*);
#endif
任何建议都非常感谢!
(我是Android的新手,所以如果我错了请纠正我。谢谢!)
答案 0 :(得分:0)
这是通过AttachCurrentThread()
完成的。
如果线程已经附加,则调用它是有利的。