由于mips64el-linux-android-strip,transformNativeLibsWithStripDebugSymbolForRelease执行失败

时间:2018-08-14 22:30:43

标签: android android-studio android-ndk

我在android studio中遇到此错误,请任何人知道如何解决它

Execution failed for task ':q84sale-base:transformNativeLibsWithStripDebugSymbolForRelease'.
> A problem occurred starting process 'command '/Users/amira/Library/Android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/darwin-x86_64/bin/mips64el-linux-android-strip''

1 个答案:

答案 0 :(得分:11)

原因:

根据https://github.com/android-ndk/ndk/wiki/Changelog-r18#known-issues

  

此NDK版本与Android Gradle插件版本3.0或更旧版本不兼容。如果看到类似No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android的错误,请更新项目文件以使用3.1或更高版本的插件。您还需要升级到Android Studio 3.1或更高版本。


如上所述:

  

更新您的项目文件以使用3.1或更高版本的插件。您还需要升级到Android Studio 3.1或更高版本。

直接解决方案是:

在您的最高级别build.gradle中,将Android gradle插件的类路径更改为3.2.1或更高版本

classpath 'com.android.tools.build:gradle:3.2.1'

但是,如果您要坚持使用现有的Gradle插件版本,则解决方法/解决方案如下:

选项1:

mips起,没有其他ndk-17体系结构。因此,您可以降级NDK(对于较早版本的NDK,请从此处检查:https://developer.android.com/ndk/downloads/older_releases)或添加abiFilters以排除mips个ABI。

看到您正在使用 ndk-bundle (这是Android Studio的默认ndk路径设置)。您可以从 local.properties 配置此路径,使其指向您的NDK版本,例如 r16b ,而不是默认的ndk-bundle

ndk.dir=<path>/android-ndk-r16b
sdk.dir=<path>/sdk

选项2:

使用以下配置仅过滤必要的ABI。

android {
    // Similar to other properties in the defaultConfig block, you can override
    // these properties for each product flavor in your build configuration.
    defaultConfig {
        ndk {
            // Tells Gradle to build outputs for the following ABIs and package
            // them into your APK.
            abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

或者如果您使用的是cmake

buildTypes {
    debug {
        externalNativeBuild {
            cmake {
                abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
            }
        }
    }
    release {
        externalNativeBuild {
            cmake {
                abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
            }
        }
    }
}

选项3:

另一个解决方法是使用以下配置跳过对mips的剥离:

android {
    ...
    packagingOptions{
        doNotStrip '*/mips/*.so'
        doNotStrip '*/mips64/*.so'
    }
    ...
}

为您的案例选择最佳选择。