android - with - packagingoptions donotstrip '/mips/so donotstrip '/mips64/so



使用mips64el-linux-android-strip,transformNativeLibsWithStripDebugSymbolForRelease执行失败 (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''

原因:

根据 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 类似 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android 的错误 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:

ndk-17 以来,没有更多的 mips 架构。 因此,您可以降级NDK(对于旧版本的NDK,请从此处查看: https://developer.android.com/ndk/downloads/older_releaseshttps://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'
    }
    ...
}

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





android-ndk