web-dev-qa-db-fra.com

Android NDK: les applications devenues obsolètes: erreur armeabi après la mise à jour de NDK

Hier, après avoir mis à jour NDK, je rencontre ces erreurs:

Error:(81) Android NDK: Application targets deprecated ABI(s): armeabi
Error:(82) Android NDK: Support for these ABIs will be removed in a 
future NDK release.    

Ce lien m'a dirigé vers le fichier setup-app.mk sur les lignes

_deprecated_abis := $(filter $(NDK_DEPRECATED_ABIS),$(NDK_APP_ABI))
ifneq ($(_deprecated_abis),)
  $(call __ndk_warning,Application targets deprecated ABI(s): 
  $(_deprecated_abis))
  $(call __ndk_warning,Support for these ABIs will be removed in a 
  future NDK release.)
endif

Je n'ai aucune idée, comment résoudre ce problème . Un conseil?

9
Vadim Novakovskiy

J'avais le même problème et j'évitais simplement de nettoyer ou de reconstruire l'ensemble du projet jusqu'à ce que j'ai la dernière mise à jour de NDK et que le problème soit réapparu.

Cela se produit car même après la suppression des cibles, il existe toujours des fichiers présents dans app/.externalNativeBuild qui y font référence.

Pour résoudre ce problème, j'ai supprimé Application.mk (que j'utilisais pour définir les cibles) et ajouté ces lignes à app/build.gradle.

Android {
    defaultConfig {

        // ...

        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a' // 'x86', 'x86_64' may be added
        }
   }

   // ...

    task ndkClean(type: Delete) {
        // remove unused archs from build cache
        delete fileTree('.externalNativeBuild') {
            exclude defaultConfig.ndk.abiFilters.collect { '**/' + it }
        }
    }
    tasks.findByPath(':clean').dependsOn ndkClean
}
15
drruggeri

Dans le fichier Application.mk, vous devez définir APP_ABI: = armeabi armeabi-v7a x86 mips Puis synchroniser le projet. Cela résoudrait votre problème.

4
nguyen nam

Supprimer armeabi de votre liste APP_ABI.

Comme vous pouvez le constater à la source, il devrait s'agir d'un avertissement, pas d'une erreur. Comment appelez-vous ndk-build?

1
Dan Albert

Si quelqu'un a toujours ce problème, voici quelques choses à essayer dans l'ordre.

  • Supprimer le dossier de construction, puis Construire> Nettoyer le projet, Construire> Régénérer le projet
  • Si ci-dessus ne fonctionne pas, ajoutez

    APP_ABI: = armeabi-v7a arm64-v8a

    dans le fichier Application.mk et reliez-le depuis le niveau d'application (tout comme Android.mk est lié à) et essayez à nouveau de construire

  • Si aucune des solutions ci-dessus ne fonctionne, supprimez -Werror flag dans Android.mk et reconstruisez-le. 

0
Irshad P I