2020-05-22

作者: ME栋 | 来源:发表于2020-05-22 18:19 被阅读0次

安卓集成三方so库第二弹

在第一弹(2020-05-19 - 简书)中介绍了新建native工程实现集成三方so库。

现在简单聊聊怎么改造项目集成so库。

1. 改造as生成的native工程(CMakeLists工程)

  1.1 在java包路径下新建jni文件夹并新建jniInterface文件,将mainActivity中的加载so代码和定义native接口代码拷贝到jniInterface文件中。

  1.2 然后选中文件右键点击External Tools创建头文件,操作如图:

    1.3 将生成的头文件com_me_nativejni_jniinterface.h修改文件名JniInterface并修改后缀为.cpp,修改代码使其成为jni调用类。

  1.4 在cMakeList中添加引用。

  1.5 app的build gradle中添加NDK打包设置,如图:

  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库引入遵循第一弹中的配置如下图;

  2.4 击build即可生成新的so库。将新生成的libnative-lib.so和三方so文件libSharedObject1.so拷贝到APPlibs文件夹,运行即可在展示界面看到三方so库中方法的数据返回。

相关文章

网友评论

    本文标题:2020-05-22

    本文链接:https://www.haomeiwen.com/subject/tfqcahtx.html