Android App引用vendor编写的jni动态库
简单描述一下,就是我自己基于FastDDS写了一个Jni的so,然后编写了jar包引用该so,最后写了一个Android的测试apk使用jar包,调用jni中的接口去创建Participant,Subscriber等。
实际将jni的so放到 /system_ext/lib64,将jar包放到 /system/framework后,安装测试Apk,运行的时候报错,提示无法加载jni动态库:
AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "/system_ext/lib64/dds_lcb_jni.so" needed or dlopened by "/apex/com.android.art/lib64/libnativeloader.so" is not accessible for the namespace "classloader-namespace"
经过DS查询,找到错误原因,是需要将jni动态库加到公共库列表文件中,列表文件的位置在
system/core/rootdir/etc/public.libraries.android.txt
将so的文件名添加到文件末尾,然后打包编译,烧写镜像后,可以在设备的/system/etc目录下确认public.libraries.txt文件中是否修改成功