NDK 你不知道的事

背景:

先说下背景,不知道大家在开发在中有没有遇到这个问题:

   No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

我先说下我在项目中是怎么出现的吧。
我在公司的项目集成NDK开发,起初都没啥问题,sync别的项目(不含NDK)也没问题;
最近更新了AS到3.2.0版本(应该不会出现此bug)及更新了最新的NDK版本,如图:

 

 

然后编译不过去,一直sync失败,然后按照提示修改了gradle文件;
修改前:

   externalNativeBuild {
            cmake {
                cppFlags ""
                arguments "-DANDROID_ARM_MODE=arm", "-DANDROID_TOOLCHAIN=gcc"
            }
        }

-DANDROID_TOOLCHAIN=gcc,猜测应该此工具链已经弃用了,从而导致编译失败的吧,然后改成如下:

   externalNativeBuild {
            cmake {
                cppFlags ""
                arguments "-DANDROID_ARM_MODE=arm", "-DANDROID_TOOLCHAIN=clang"
            }
        }

当然,默认的工具链就是clang,你也可以不写;
然后编译成功。

后来在看其他源码demo时,所有的都编译失败,当时也没太在意,我就用了最简单的处理方式;

处理方式一

卸载NDK,成功过后再安装NDK,刚开始还能忍受,后来实在不能忍了,正所谓是可忍孰不可忍(哈哈哈,瞎扯淡的。。。),然后有了方式二

处理方式二

从提示当中就可以看出我们就可以看出,缺少相应的架构工具链,然后从查看NDK文档也明确的说明了每个架构有自己的工具链,而此处编译不了无非就是缺少这个mips64el-linux-android;
知道问题所在过后我们去官网下载最新的NDK:
下载地址一:https://developer.android.com/ndk/downloads/?hl=zh-cn
需要翻墙
下载地址二:https://developer.android.google.cn/ndk/downloads/?hl=zh-cn
安卓开发的同学我相信肯定能下载到的,这里就不细说了;
下载完过后解压,然后找到相应的文件放入已有的NDK中就可以了,建议把64位和32位的都copy进入,避免再次出现这种问题,我这里只替换了需要的,如下图:

下面已有的,大家可以明显看到缺少了相应的架构吧:

好了,copy进去,解决此问题。
由此值得我们好好研究下,能不能让AS在编译的时候不去执行查找NDK呢!或者有什么更好的方式需要NDK的项目可以去查找NDK,不需要的就没必要去查找了。
要是有哪位同学知道答案可以告诉我哈~~

大家可以关注我的个人博客:
http://www.chenbu2.com
简书地址:
https://www.jianshu.com/u/f4874eb81c5b
GitHub地址:
https://github.com/ChenBu2
爱学啊合作讲师:
http://www.ixuea.com/
公众号:
陈不2
技术交流QQ群:
858499698

阿里云双十一活动

双11红包来啦,拼购1折起

image

原文链接:
https://mp.weixin.qq.com/s/5N21xLqA1Bt9Q6RUKmUBTw

陈不二,喜欢技术,欢迎一块交流学习~
大家可以关注我的个人博客:
http://www.chenbu2.com
简书地址:
https://www.jianshu.com/u/f4874eb81c5b
GitHub地址:
https://github.com/ChenBu2
爱学啊合作讲师:
http://www.ixuea.com/
公众号:
陈不2
技术交流QQ群:
858499698