web-dev-qa-db-fra.com

AVERTISSEMENT: les ABI [armeabi-v7a, armeabi] sont définies par le drapeau de gradation 'Android.injected.build.abi' qui contient 'ARMEABI' non ciblé par ce projet

J'ai eu ce problème la dernière fois après la mise à niveau de la version NDK vers la dernière version dans Android Studio. J'ai également trouvé une solution pour résoudre ce problème. Si quelqu'un a ce problème, j'espère que c'est la meilleure question et la meilleure réponse pour vous. S'il vous plaît vérifier ma réponse.

12
Chivorn

J'ai trouvé la solution en lisant le release note here pour la révision 16 de NDK.

  1. Si vous configurez votre projet avec Application.mk, ajoutez ce qui suit dans votre fichier Application.mk:

    APP_STL := c++_shared
    
  2. Si vous utilisez CMake via Gradle, ajoutez ce qui suit à votre build.gradle:

    externalNativeBuild {
        cmake {
            cppFlags ""
            arguments "-DANDROID_STL=c++_shared"
        }
    }
    

Pour vous tenir au courant de la nouvelle version et de la note, veuillez suivre cet Historique des révisions du NDK pour appliquer les modifications.

J'espère que cela peut résoudre votre problème.

14
Chivorn

Selon la documentation Android , il s'agit d'un problème connu, dû au fait que le plugin Gradle inclut toujours les ABI non pris en charge par défaut. armbeabi était obsolète en NDKr16 et supprimé en 17, d'où l'avertissement. Pour résoudre ce problème, répertoriez vos architectures prises en charge sous splits.abi:

...
splits {
    abi {
        ...
        reset()
        include "x86", "armeabi-v7a", ...
    }
}
4
Filipe Oliveira

J'ai eu le même problème et résolu en modifiant le fichier build.gradle du module en ajoutant ci-dessous le programme d'installation

Android {
    ...
    splits {
        abi {
            enable true
            reset()
            include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' //select ABIs to build APKs for
            universalApk true //generate an additional APK that contains all the ABIs
        }
    }

    project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9]

    Android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.versionCodeOverride =
                   project.ext.versionCodes.get(output.getFilter(com.Android.build.OutputFile.ABI), 0) * 1000000 + Android.defaultConfig.versionCode
        }
    }
}

Pour votre référence, bonne chance.

0
ffhorse