android引入so文件常见问题
2017-09-27 10:50
369 查看
在开发android程序时,由于要使用到so文件,无奈自己引入,做个简单总结。
使用so文件,配置so文件的source目录
在gradle(Module:app)中配置
然后加入需要的so文件到目录中
然后。。。就是踩坑了。
无法找到so文件
couldn’t find “libffmpegjni.so
无法找到so文件的情况下,可以解压打包好的App,在lib目录下看到引入的so资源目录。
对应
armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
x86: 平板、模拟器用得比较多。
x86_64: 64位的平板。
并且在每个目录下的so文件数量大多都不一样,而在不同的处理器上,查找so文件的顺序不同(例如64位处理器会优先查找arm64-v8a),这也就引起了系统在加载so文件时找不到so文件夹。
解决方案:
方案1:保证每个目录下都有自己所需要的so文件。
方案2:在牺牲效率的前提下,只保留armeabi文件夹,因为即使是64位的处理器也可以运行32位的库。
对于方案2,在gradle中加入如下配置,就可以看到打包后的lib目录只剩一个了。这样处理器就会去自动加载这个目录下的so文件。
如果还是不行,再gradle.properties中加入:android.useDeprecatedNdk=true
调用.so文件时报错:libcooee.so: has text relocations
原因是编译so文件使用的SDK版本低于当前使用的SDK版本,需要在gradle文件中降低当前使用的SDK版本。
小白的作死之旅。。。
使用so文件,配置so文件的source目录
在gradle(Module:app)中配置
android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { ... ndk{ abiFilters "armeabi-v7a" } } buildTypes { release { ... } } sourceSets { main { jniLibs.srcDir 'libs' } } }
然后加入需要的so文件到目录中
然后。。。就是踩坑了。
无法找到so文件
couldn’t find “libffmpegjni.so
无法找到so文件的情况下,可以解压打包好的App,在lib目录下看到引入的so资源目录。
对应
armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
x86: 平板、模拟器用得比较多。
x86_64: 64位的平板。
并且在每个目录下的so文件数量大多都不一样,而在不同的处理器上,查找so文件的顺序不同(例如64位处理器会优先查找arm64-v8a),这也就引起了系统在加载so文件时找不到so文件夹。
解决方案:
方案1:保证每个目录下都有自己所需要的so文件。
方案2:在牺牲效率的前提下,只保留armeabi文件夹,因为即使是64位的处理器也可以运行32位的库。
对于方案2,在gradle中加入如下配置,就可以看到打包后的lib目录只剩一个了。这样处理器就会去自动加载这个目录下的so文件。
defaultConfig { ... //配置只加载armeabi下的so文件 abiFiltersndk { abiFilters "armeabi" } }
如果还是不行,再gradle.properties中加入:android.useDeprecatedNdk=true
调用.so文件时报错:libcooee.so: has text relocations
原因是编译so文件使用的SDK版本低于当前使用的SDK版本,需要在gradle文件中降低当前使用的SDK版本。
小白的作死之旅。。。
相关文章推荐
- Android的.so文件及常见问题汇总
- AndroidStudio引入so文件
- android常见问题之jni读取assets资源文件
- Android Eclipse JNI 调用 .so文件加载问题
- Android Eclipse JNI 调用 .so文件加载问题
- android常见问题之jni读取assets资源文件(附源码)
- Android开发过程中遇到的关于so文件的问题
- Android引用百度定位API第三方组件后导致其它.so文件无法正常加载的问题
- 解决在android平台上apk的覆盖安装so文件不覆盖问题
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- android studio引入.so文件
- Android 常见问题之Assets文件大小限制
- Android-ndk-64位so文件问题(RSA加密采用cpp代码实现)
- android studio 导入so文件出现的问题AND[android]复制 APK 许可证 (同一文件) 中的重复文件
- (转)android常见问题之jni读取assets资源文件(附源码)
- Android Eclipse JNI 调用 .so文件加载问题
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- Android 常见问题之Assets文件大小限制
- 关于在android开发时图像识别so文件不兼容的问题
- Android Eclipse JNI 调用 .so文件加载问题