前言:
1. so加载失败的常规原因是so未放到正确路径, 一般新手会遇到。如果你是新手, 查看常规解决方式: http://blog.csdn.net/yy1300326388/article/details/46291417
2. 本文适合已经Google多次, 且确定所有so路径正确, 但是还是报错没加载到so的无厘头bug情况. 本文所有内容均针对该情况进行描述. 其他情况就擅用搜索吧.
详细描述:
如果你遇到的情况是[2], 可能就是你最新添加的依赖项目中可能包含多种架构支持, 比如"arm-v8", "armeabi", "armeabi-v7a", "x86", "mips", 但是你的app中只有部分架构支持"armeabi"; 如果你此刻运行在"arm-v8"的手机上肯定就报错了, 因为你的apk中其实有了"arm-v8"目录, 但是里面没有对应的so. 找到你的apk文件, 用apktool解包, 找到你的so目录, 就会发现有多个目录, 但是里面的so数目不一样, 有些目录缺少个别so.
解决方法:
在项目的build.gradle中指定需要兼容的架构, 代码如下:
defaultConfig {
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}
加了这个后再次编译成apk, 重新解包apk就会发现so的目录只有指定的这几个了
// 这个写的还是比较简单... - -
// 遇到的自然懂. 但是对于新手不那么明白. 好吧, 我不喜欢记录那些随便搜搜就有答案的那些方案的东西. 记录下来, 可能别人会遇到这样的情况, 方便搜到
来源:oschina
链接:https://my.oschina.net/u/94055/blog/634695