实现JNI的步骤一般包括以下几步:
1.编写java源文件,在该文件中定义底层需要实现的方法。
2.用javah -jni命令编译得到头文件
3.完成头文件的具体实现,处理java和底层的变量转换。
4.完成底层c/c++的具体实现。
5.编译出.so文件。导入到安卓项目中。
6.在安卓项目中初始化并使用该.so。
在app的开发过程中,第4步往往是由专业的c/c++工程师完成,而其余几部均由安卓工程师完成。当然 ,现在很多安卓工程师也写相关的底层c代码。
所以,jni的工作流应该是这样的:
在需求明确以后,底层的工程师只需要关心底层的具体实现,完成后将代码分发给android和ios工程师,然后各平台分别完成其余的调用。
这样做好处也显而易见:
由于业务逻辑是统一的底层代码实现,保证了各平台的统一性,不会出现因为平台的不同导致的实现不同;而且在逻辑需要改动时,只需底层工程师修改代码重新给各平台,各平台只需重新做编译即可完成更新。
备注:
由于java语言的性能问题和不安全性,jni经常使用在需要高度保密的逻辑或者比较复杂的算法实现上,比如加密或图像处理算法上,很多app在这两方面都使用到了jni来处理
。