JNI/NDK开发指南(2)
2014-12-22 00:08
288 查看
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方法运行在哪个线程。
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开发指南(三)——JNI数据类型及与Java数据类型的映射关系
- JNI/NDK开发指南(九)——JNI调用性能测试及优化
- JNI/NDK开发指南(一)
- JNI/NDK开发指南(二)——JVM查找java native方法的规则
- JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法
- (4.1.27.7)JNI/NDK开发指南(四)——JNI 实战全面解析
- JNI/NDK开发指南(三)
- JNI/NDK开发指南(四)--访问数组(基本类型数组与对象数)
- JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
- (4.1.27.5) JNI/NDK开发指南(二)——JNI数据类型及与Java数据类型的映射关系
- JNI/NDK开发指南(二)——JVM查找java native方法的规则
- JNI/NDK开发指南(七)
- JNI/NDK开发指南(开山篇)
- JNI/NDK开发指南(四)——字符串处理
- JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法
- JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量
- JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
- JNI/NDK开发指南(八)
- JNI/NDK开发指南(七)---调用构造方法和父类实例方法
- (4.1.27.8)JNI/NDK开发指南(五)——Jni打包及引用aar