Android 关于.so文件的导入和使用
- .so文件的导入
- .so文件的使用
.so文件的导入
1. 为设备所支持的CPU架构创建相应的lib目录
但是所有设备都能兼容armeabi-v7a这个架构,所以如果需要缩减apk大小,可以只保留armeabi-v7a这个目录。
最好还是能为该设备所支持的架构都创建对应目录,提升程序效率。
查询设备CPU信息方法:
adb shell
cat /proc/cpuinfo
但是,如果不确定支持的cpu架构是哪种,也可以全部都创建上,也不是不行,哈哈…。
比如下图所示:
2. 加载.so的java类所在目录
.so可能来自其它project,当要导入到一个新的project中进行使用时,需要注意:.so可能来自其它project,当要导入到一个新的project中进行使用时,需要注意:
调用System.loadLibrary(“libxxx.so”)的java类,所在的目录必须和之前project所使用的目录一致,否则会出现 java.lang.UnsatisfiedLinkError 此类的运行时异常。
3. 程序中加载.so
static {
System.loadLibrary("upnp");
}
4. build.gradle 文件修改
android {
sourceSets.main{
jniLibs.srcDirs = ['src/main/jniLibs'];
}
}
.so文件的使用
//Java类中,声明JNI方法。使用的地方,直接调用即可。
private static native void _start();
private static native void _stop();