安卓集成三方so库第二弹
在第一弹(2020-05-19 - 简书)中介绍了新建native工程实现集成三方so库。
现在简单聊聊怎么改造项目集成so库。
1. 改造as生成的native工程(CMakeLists工程)
1.1 在java包路径下新建jni文件夹并新建jniInterface文件,将mainActivity中的加载so代码和定义native接口代码拷贝到jniInterface文件中。
![](https://img.haomeiwen.com/i2488524/ba38ff07f14c4f7f.png)
1.2 然后选中文件右键点击External Tools创建头文件,操作如图:
![](https://img.haomeiwen.com/i2488524/9ea8bdd563bbac79.png)
1.3 将生成的头文件com_me_nativejni_jniinterface.h修改文件名JniInterface并修改后缀为.cpp,修改代码使其成为jni调用类。
![](https://img.haomeiwen.com/i2488524/60b7e6e81f64c3ff.png)
1.4 在cMakeList中添加引用。
![](https://img.haomeiwen.com/i2488524/9045460932795804.png)
1.5 app的build gradle中添加NDK打包设置,如图:
![](https://img.haomeiwen.com/i2488524/987289c2daebc96f.png)
1.6 点击build一下,build成功后,将build->cmake->obj->debug(如果正式包用release)下的so文件拷到libs运行即可实现改造。
改造注意事项:jniInterface调用类中函数名称遵循文件路径名+方法名。如:Java_com_me_nativejni_jni_JniInterface_getTest()
2. 由对native项目改造引申出对已有项目集成三方so库改造方法。
2.1 即在项目java文件夹下建立jni文件夹,在该文件夹下建立jni接口文件(java文件),在文件中静态加载so库,声明native函数。
2.2 在cpp文件夹下(方便CMakeLists文件中引用)建立对应的jniinterface.cpp文件,jniinterface.cpp中主要引入jni.h和三方so库的头文件,其他头文件根据自身需要引入,再对应写出JniInterface.java文件中定义的native方法(文件名+方法名)如:Java_com_me_nativejni_jni_JniInterface_getTest()。
2.3 代码写好以后再在CMakeLists文件中add_library下引入JniInterface.cpp文件;三方so库引入遵循第一弹中的配置如下图;
![](https://img.haomeiwen.com/i2488524/cbc87a0d2807bc38.png)
2.4 击build即可生成新的so库。将新生成的libnative-lib.so和三方so文件libSharedObject1.so拷贝到APPlibs文件夹,运行即可在展示界面看到三方so库中方法的数据返回。
网友评论