您的位置:首页 > 移动开发 > Android开发

Android NDK Couldn't load indLibrary

2016-03-10 17:29 330 查看
前言:

1. so加载失败的常规原因是so未放到正确路径, 一般新手会遇到。如果你是新手, 查看常规解决方式: /detail/2644075221.html

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的目录只有指定的这几个了

// 这个写的还是比较简单... - -

// 遇到的自然懂. 但是对于新手不那么明白. 好吧, 我不喜欢记录那些随便搜搜就有答案的那些方案的东西. 记录下来, 可能别人会遇到这样的情况, 方便搜到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: