web-dev-qa-db-fra.com

transformNativeLibsWithStripDebugSymbolForRelease a échoué avec mips64el-linux-Android-strip

Je reçois cette erreur dans Android studio, s'il vous plaît, n'importe qui sait comment le résoudre, faites-le moi savoir)

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''
5

Raisons:

Selon https://github.com/Android-ndk/ndk/wiki/Changelog-r18#known-issues

Cette version du NDK est incompatible avec le Android plugin Gradle version 3.0 ou antérieure. Si vous voyez une erreur comme No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-Android, mettez à jour votre fichier de projet pour utiliser le plugin version 3.1 ou plus récent. Vous devrez également mettre à niveau vers Android Studio 3.1 ou plus récent.


Comme dit ci-dessus:

mettez à jour votre fichier de projet pour utiliser le plugin version 3.1 ou plus récent. Vous devrez également mettre à niveau vers Android Studio 3.1 ou plus récent.

La solution directe est:

De votre TOP-LEVEL build.gradle, changez votre chemin de classe pour Android plugin gradle à 3.2.1 ou supérieur .

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

Mais , si vous voulez vous en tenir à votre version existante du plugin Gradle, les solutions/solutions de contournement sont les suivantes :

Option 1:

Il n'y a plus d'architecture mips depuis ndk-17. Ainsi, vous pouvez soit rétrograder votre NDK (pour les anciennes versions de NDK, veuillez vérifier ici: https://developer.Android.com/ndk/downloads/older_releases ) ou ajouter abiFilters pour exclure mips ABI.

Voyant que vous utilisez ndk-bundle qui est les paramètres par défaut du chemin ndk de Android Studio. Vous pouvez configurer cela chemin depuis local.properties en faisant pointer vers votre version NDK, par exemple r16b, plutôt que la valeur par défaut ndk-bundle.

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

Option 2:

Utilisation de la configuration ci-dessous pour filtrer uniquement les ABI nécessaires.

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'
        }
    }
}

Ou si vous utilisez cmake

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

Option 3:

Une autre solution consiste à ignorer la suppression des mips en utilisant la configuration ci-dessous:

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

Choisissez la meilleure option pour votre cas.

12
shizhen