Android NDK Couldn't load indLibrary

匆匆过客 提交于 2019-12-02 21:47:44

前言:

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


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

// 遇到的自然懂. 但是对于新手不那么明白. 好吧, 我不喜欢记录那些随便搜搜就有答案的那些方案的东西. 记录下来, 可能别人会遇到这样的情况, 方便搜到

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!