前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >"No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel

"No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel

原创
作者头像
望天
发布2019-09-26 13:53:06
1.6K0
发布2019-09-26 13:53:06
举报
文章被收录于专栏:along的开发之旅

最近Android Studio升级了, 顺便也升级了sdk版本, 但是升级过后编译项目提示"No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android".  刚开始很懵, 上网找了下原因, 觉得说的都不是特别清晰, 翻了下谷歌官网(一定要英文版, 中文版更新太慢), 弄清楚了原因, 记录在此.

这里先不卖关子了, 直接说解决办法.

1. 解决方案:

新建或者修改local.properties, 将

ndk.dir=/Users/along/Library/Android/sdk/ndk-bundle

指向一个老版本, 比如:

ndk.dir=/Users/along/Library/Android/sdk/android-ndk-r14b

即可解决.

2. 原因:

接下来说下为什么可以这样解决:

2.1 被官方放弃的MIPS

mipsel是一个精简指令集架构, 类似于arm/x86的架构, 详情见wiki. 大概是这个架构上没有多少人开发, 谷歌官方觉得多维持一个无用的架构太费功夫, 索性不再支持这个架构了.

看下 android-ndk-r14b, 是有arch-mips的.


在看下最新的ndk版本: 已经没有mips架构了. 而且是所有版本都不带mips架构了.


查看下安卓官网(https://developer.android.com/ndk/guides/abis), 说NDK r17时移除了MIPS架构的支持. 既然都移除了, 当然就找不到了. 我这里就是因为更新了sdk里的ndk版本, 最新的版本去除了MIPS架构导致的报错. 这种情况, 下个NDK r16及以下的版本, 就可以解决这个问题.

Note: Historically the NDK supported 32-bit and 64-bit MIPS, but support was removed in NDK r17.

2.2 gradle plugin的影响

按道理说, 我又没有打mips的so, 有没有mips架构的ndk和我有关系么? 抱歉, 真有. 这又要说到gradle-plugin, gradle-plugin 在3.1.0之前, 默认为mips/mips64/armeabi打apk. 没有MIPS架构的ndk, 打包当然就失败了. 而且在最新的gradle版本中, 如果你需要为armeabi打so, 需要通过include ‘armeabi’来指定.

看下gradle插件官网描述(https://developer.android.com/studio/releases/gradle-plugin):

When building multiple APKs that each target a different ABI, the plugin no longer generates APKs for the following ABIs by default: mips, mips64, and armeabi.

If you want to build APKs that target these ABIs, you must use NDK r16b or lower and specify the ABIs in your build.gradle file, as shown below:

splits {

 abi {

     include 'armeabi', 'mips', 'mips64'

     ...

 }

}

3. 最终解:

所以这里最终解决办法有两种:

一种是ndk版本, 找个低于r17的ndk, 有MIPS, 然后使用ndk.dir指向.

一种是升级gradle版本, 升到3.1.0, 就不会再打MIPS架构的apk了, 就不需要MIPS的ndk了.

修改为 com.android.tools.build:gradle:3.1.0 或者更高.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 解决方案:
  • 2. 原因:
    • 2.1 被官方放弃的MIPS
      • 2.2 gradle plugin的影响
      • 3. 最终解:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档