65 votes

Android Studio : Outil pour les bandes manquantes

Je reçois constamment cet avertissement lorsque je construis mon code Android studio en utilisant la commande terminal gradle clean assembleRelease :

Unable to strip library 'lib.so' due to missing strip tool for ABI 'ARMEABI'. Packaging it as is.

Veuillez m'aider à résoudre cet avertissement.

Note : Je sais que cela n'affectera pas le comportement de mon application, mais mon APK est trop volumineux et cela m'aidera sûrement à réduire la taille de l'APK. J'ai donc besoin que cela soit résolu.

2 votes

Vous cherchez peut-être medium.com/@aswinmohanme/

109voto

Dhiraj Gupta Points 178

Le NDK installé par défaut ne semble pas avoir les outils nécessaires pour dépouiller les binaires qui ont été construits avec le support ARMEABI, il finit donc par empaqueter la bibliothèque entière, ce qui augmente considérablement la taille du fichier construit.

J'ai constaté que l'installation de l'outil "NDK (Side by side)" à partir d'Android Studio -> Tools -> SDK Manager -> SDK Tools prend en charge cet avertissement et réduit également la taille de l'APK construit, en particulier pour les projets React Native.

12voto

user7229569 Points 131

Vous pouvez essayer d'utiliser la configuration suivante dans app/build.gradle.

android {    
    packagingOptions {
        // exclude ARMEABI native so file, ARMEABI has been removed in NDK r17.
        exclude "lib/armeabi/**"
    }
}

Supprimer (ou rendre optionnelle) la bibliothèque native MIPS #3504
Android-ABIs

11 votes

Il s'est débarrassé de l'avertissement, mais les effets secondaires existent toujours.

0 votes

En faisant cela, vous risquez de perdre le support ARMv7 de votre application. Veuillez vous référer à ma réponse pour plus de détails.

8voto

Étapes de l'installation du NDK (côte à côte)

  • Ouvrir Android Studio
  • Cliquez sur Configure/ Tools
    • Cliquez sur SDK Manager
      • Cliquez sur SDK Tools onglet
        • Sélectionnez ci-dessous :
          • NDK (Side by side)
          • CMake
          • Android SDK Command-line Tools (latest)
        • Apply

NOTE : Android SDK Command-line Tools (latest) n'est pas nécessaire, mais je l'ai installé pour ne pas avoir à chercher d'autres solutions. Aujourd'hui, j'ai dû résoudre de nombreux problèmes pour faire fonctionner une nouvelle application React Native.

Plus d'informations : https://developer.Android.com/studio/projects/install-ndk

3voto

Mateo Guzmán Points 198

Une solution possible spécifiquement pour React Native :

J'ai eu ce problème en essayant de construire mon application React Native à partir de la ligne de commande en exécutant cd android/ && ./gradlew assembleDebug (sans avoir Android Studio ouvert).

J'ai ouvert Android Studio, j'y ai construit l'application et cela a automatiquement réglé le problème. Une fois que j'ai réessayé en ligne de commande, le problème ne s'est plus produit.

2voto

Igor Kharakhordin Points 5886

J'aimerais combiner toutes les réponses existantes et ajouter quelques explications/détails supplémentaires.

Tout d'abord, comme d'autres personnes l'ont mentionné, vérifiez que vous avez installé Android NDK (NDK (Side by side) dans Android Studio -> Tools -> SDK Manager -> SDK Tools). Mais ce n'est toujours pas suffisant pour corriger cet avertissement.

Il y a une liste de ABIs supportés par Android NDK et il y a une note disant que 'armeabi' n'est plus supporté :

Historiquement, le NDK supportait ARMv5 (armeabi), et MIPS 32-bit et 64-bit, mais le support de ces ABIs a été supprimé dans le NDK r17.

Donc, si votre application doit prendre en charge les appareils ARMv5/6 (ce qui est peu probable - ces appareils sont plutôt vieux), vous devez soit.. :

  • Utilisez un NDK plus ancien (<r17) qui supporte l'ABI 'armeabi' (choisissez une autre version dans le SDK Manager).
  • Ignorez l'avertissement. Dans ce cas, la bibliothèque fonctionnera toujours sur les anciens appareils, même avec les nouveaux NDK. pero sera emballé dans l'APK pour chaque ABI, y compris les plus récents (ce qui entraîne une augmentation de la taille de l'APK).

S'il n'est pas nécessaire de prendre en charge ARMv5/6, vous pouvez toujours vouloir prendre en charge ARMv7 ABI 'armeabi-v7a'. Encore une fois, il y a deux options :

  • Recompilez la bibliothèque partagée avec un NDK Android plus récent qui supporte l'ABI 'armeabi-v7a'.
  • (Non recommandé) Renommer le dossier 'armeabi' en 'armeabi-v7a'. (Je ne suis pas sûr que les bibliothèques pour ces ABIs soient compatibles ou non)

Si la bibliothèque ne vous appartient pas, vous devriez probablement demander à son responsable de la réparer.

Mais s'il n'est pas nécessaire de supporter même ARMv7, n'hésitez pas à exclure les bibliothèques :

android {    
    packagingOptions {
        exclude "lib/armeabi/**"
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X