这篇文章上次修改于 2355 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

升级NDK后,老项目在运行或者打包时就会报此错误,开始的时候从网上找到一种解决办法,修改local.properties文件中的 ndk.dir

ndk.dir=/Users/dean/Dev/android-sdk/ndk-bundle
#修改成
ndk.dir=/Users/dean/Dev/android-sdk/ndk-10

就是把 bundle 换成一个数字,确实是可行的,但local.properties这个文件是自动生成的,每次重新打开工程时都要修改,很是麻烦。

看报错内容,是说mips64el-linux-android-strip这个东西执行不了,于是,顺藤摸瓜根据那个路径找找这个东西,当找到darwin-x86_64这一层文件夹时,就没有了,文件夹中只有一个文本NOTICE-MIPS64,打开来看

This mips64el-linux-android-4.9 directory exists to make the NDK compatible with the Android
SDK's Gradle plugin, version 3.0.1 and earlier, which expects the NDK
to have a MIPS64 toolchain directory.

这就都明白了,为什么新项目的local.properties ndk.dir与老的一样,而只有老项目才会报错。

两个解决方法

  • 升级Gradle plugin,修改build.gradle(Project)

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.3'
            //修改到高于或等于3.0.1的版本
        }
    }
  • 修改NDK的本地路径 菜单栏 File - Project Structure - SDK Location - Android NDK location,修改成一个低版本的NDK,我的NDK是在升级到17.0.4640043 rc1后出现的这个问题。默认情况下,NDK使用的是android-sdk下的ndk-bundle这个文件下的NDK,但正是这个版本被升级了,所以需要从网上去找一个低版本的NDK,因为我之前搞Cocos需要用NDK-10,直接指定过来一试,问题解决。

Tip 不建议使用第一种方式,想起同事经常说的一句话

你见过代码有保质期吗?Android studio的代码就有[哭笑]

其实说的就是 Gradle ,当你打开一个老项目,AS提示你,Gradle Update的时候,你一定要有充足的勇气和充足的时间,说多了全是眼泪...