JNIEnv* dlsmgetenv(){
void*runtime = dlopen("/system/lib/libandroid_runtime.so", RTLD_NOW);
JNIEnv*(*getAndroidRuntimeEnv)();
getAndroidRuntimeEnv = (JNIEnv*(*)())dlsym(runtime, "_ZN7android14AndroidRuntime9getJNIEnvEv");
return getAndroidRuntimeEnv();
}
以上代码放在so库里调用可以正常获取JNIEnv,但是放在android可执行文件里面一调用就崩溃!
请问android可执行文件里到底怎样才能获取JNIenv变量?求解,已经忙活一周了还搞不定,谢谢
void*runtime = dlopen("/system/lib/libandroid_runtime.so", RTLD_NOW);
JNIEnv*(*getAndroidRuntimeEnv)();
getAndroidRuntimeEnv = (JNIEnv*(*)())dlsym(runtime, "_ZN7android14AndroidRuntime9getJNIEnvEv");
return getAndroidRuntimeEnv();
}
以上代码放在so库里调用可以正常获取JNIEnv,但是放在android可执行文件里面一调用就崩溃!
请问android可执行文件里到底怎样才能获取JNIenv变量?求解,已经忙活一周了还搞不定,谢谢
解决方案 »
- ubuntu eclipse报错:error executing aapt
- 好久没问问题了,来个framelayout的问题先
- Android查看Proxy是否设置成功
- Android 中 Service到底是个什么东东?
- TextView 里面明明显示的有数据,为什么调用它的三个函数:getLinesCount==0;getBaseline==-1;getBottom==0?
- QQ空间发表一条说说,包括文字和图片
- 链接WEB服务有时报错BufferedInputStream is Closed
- 想通过反射动态生成一个列表,结果失败了,求高手
- 这个是为什么??帮我看看正在调程序中
- myeclipse8.5配置android sdk localtion就是不显示版本,100分
- list自定义item 怎么插入
- 如何在一个类中把一个方法的部分代码抽出来,再放到其他方法里面使用
我猜应该要先拿到JavaVM对象然后再调用AttachCurrentThread函数才行,和多线程获取JNIEnv一个道理
现在的问题是JavaVM拿不到
NDK 不能直接使用android::AndroidRuntime::getJavaVM()方法,只能通过dlsym来调用,但是我搜遍了也没找到这个函数的符号,dlsym参数不知道该怎么写