web-dev-qa-db-ja.com

transformNativeLibsWithStripDebugSymbolForReleaseの実行がmips64el-linux-Android-stripで失敗する

Androidスタジオでこのエラーが発生しています。解決方法を知っている人は誰でも教えてください

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などのエラーが表示された場合は、プロジェクトファイルを更新してプラグインバージョン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:

ndk-17以降、mipsアーキテクチャはありません。そのため、NDKをダウングレードするか(古いバージョンのNDKの場合は、ここから確認してください https://developer.Android.com/ndk/downloads/older_releases )、除外するabiFiltersを追加してくださいmips ABI。

Android Studioのデフォルトのndkパス設定であるndk-bundleを使用していることを確認します。これを構成できます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'
    }
    ...
}

あなたのケースに最適なオプションを選択してください。

12
shizhen