首页 > 代码库 > JNI/NDK开发指南(2)
JNI/NDK开发指南(2)
1.生成动态库.so,存放于手机的system/lib/中(APP如何将.so存入该目录,奇怪?????),Java层调用JNI的类会执行静态代码System.loadLibrary("***")将手机的system/lib目录中的动态库加载到VM。
2..so动态库里,C组件开发者通过JNI_OnUnload()函数进行初始化。当然,老版的JNI是没有JNI_OnUnload()函数的,从而VM也能根据有无该函数判断JNI是新版or老版。
3.JNI_OnUnload()函数还能将.so提供的各个本地函数登记(怎样的登记过程???)到VM里,以便能加快后续呼叫本地函数的效率。
4.正如在载入.so时会立即呼叫JNI_OnLoad()来进行组件内的初始化;当VM释放该C组件时,也会呼叫JNI_OnUnload()函数来进行善后清除动作。
5.关于JNIEnv的个人理解:例如多个线程中创建了同一个类的对象,并调用对象的native方法,这时会向native方法传递一个参数JNIEnv,表明native方法方法所运行的环境即该native方法运行在哪个线程。
JNI/NDK开发指南(2)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。