使用mips64el-linux-android-strip,transformNativeLibsWithStripDebugSymbolForRelease执行失败

问题描述 投票:4回答:1

我在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''
android android-studio android-ndk
1个回答
8
投票

原因:

根据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或更高版本。

直接解决方案是:

从你的TOP-LEVEL 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'
    }
    ...
}

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

© www.soinside.com 2019 - 2024. All rights reserved.