70 votes

L'APK n'a pas réussi à s'installer. Erreur : Impossible d'analyser la chaîne d'erreur

Le fait de glisser et de déposer un paquet Android *.APK dans un AVD (Android Virtual Device) provoque une erreur énigmatique :

The APK failed to install.
Error: Could not parse error string
  • J'ai essayé un AVD avec la dernière API (28) et un qui correspond à mon propre téléphone (Nougat 7.0).
  • L'APK est un APK Kivy en python construit avec buildozer.
  • Je suis novice en matière de développement Android. Je ne sais même pas par où commencer pour déboguer cela. Existe-t-il un meilleur journal ?
  • Si je télécharge l'APK sur l'AVD via le gestionnaire de fichiers et l'installe, cela échoue également.
  • CEPENDANT, si je télécharge ce même APK sur mon appareil Android, il fonctionne ! Non seulement il s'installe, mais il ouvre et exécute mon application sans aucune erreur.
  • Les sources inconnues sont autorisées

    (int) API Android à utiliser

    Android.api = 24

    (int) API minimale requise

    Android.minapi = 24

    (int) Version du SDK Android à utiliser

    Android.sdk = 24

    (str) Version du NDK Android à utiliser

    Android.ndk = 9c

enter image description here

The APK failed to install. Error: Could not parse error string

0 votes

Je suis également confronté à ce problème, mais ce problème provient des versions oreo récemment mises à jour, je suppose qu'il est lié à la sécurité, disant que nos applications ne sont pas vérifiées (la chaîne est liée à notre nom de paquet, je suppose) et pour assurer la sécurité de nos appareils, ils ne sont pas installer manuellement dans les appareils Android - montrant le risque de sécurité par play protect.

0 votes

J'utilisais Nougat, ce n'est pas avant Oreo ? Et j'autorise les sources inconnues

49voto

Melquiades Points 7081

CEPENDANT, si je télécharge ce même APK sur mon appareil Android, il fonctionne ! Non seulement il s'installe, mais il ouvre et exécute mon application sans aucune erreur.

Cela me dit que cela pourrait être dû au fait que votre application utilise des bibliothèques natives qui ne correspondent pas à l'architecture du processeur de l'émulateur (voir ceci question )

Pour obtenir un message d'erreur plus détaillé, installez votre application via un terminal :

adb install path_to_your_app/name_of_your_app.apk

Vous pourriez voir ça :

adb: failed to install name_of_your_app.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries

1 votes

Oui. Je viens de mettre à jour l'émulateur via le sdk manager et il a commencé à fonctionner correctement.

1 votes

Ouvrez Android Studio. Menu Outils, SDK Manager, onglet SDK Tools. Regardez la ligne "Android Emulator".

2 votes

Seule l'installation via la commande adb a fonctionné pour moi.

38voto

Bilal Points 594

J'étais confronté au même problème. Le problème est que, si le la même application est déjà installée avec la même version sur l'émulateur, il n'y aura pas de mise à jour ou d'installation. Il y aura la même erreur que celle que vous obtenez.

Essayez les solutions suivantes pour le réparer.

  1. Désinstaller l'ancien APK depuis l'émulateur, puis faites glisser et déposez le nouvel APK, il installera l'application.

  2. Changez le numéro de version à partir du fichier Build.gradle comme suggéré par @Chuy47, construire le nouvel APK et l'installer

J'espère que cela vous aidera.

11voto

TellMeWhy Points 115

Après avoir passé un assez long moment à souffrir de ce problème moi-même après avoir construit un apk en utilisant p4a en utilisant le armeabi-v7a flag, j'ai découvert le problème, comme indiqué dans la réponse de @Melquiades, l'émulateur par défaut utilise x86 donc, bien sûr, il ne sera pas compatible.

La solution est de construire votre apk pour x86 ce que vous pouvez faire en le spécifiant dans l'option p4a en utilisant le drapeau arch - --arch=x86 . Vous pouvez voir les options disponibles ici : https://github.com/kivy/python-for-Android/blob/master/pythonforandroid/archs.py

Personnellement, courir python3crystax ndk avec tout autre drapeau que armeabi-v7a n'a pas réussi à trouver les binaires appropriés. L'exécution en utilisant python3 et le ndk Android a également échoué pour toutes les architectures.

Si vous utilisez python3 et que vous souhaitez construire pour toutes les architectures, vous pouvez utiliser buildozer . Spécifiez python3crystax dans le buildozer.spec vous devez lier le répertoire ndk sur le serveur de la android.ndk_path et spécifiez l'architecture que vous avez choisie sur la ligne

# (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86
android.arch = x86

installez python 3.5 en suivant ce tutoriel : https://tecadmin.net/install-python-3-5-on-ubuntu/ . Il se peut que vous deviez rétrograder ou mettre à niveau votre cython version, en fonction de votre configuration actuelle. Notez que les versions 0.27 et 0.27.2 ne fonctionnent pas avec Kivy. J'ai trouvé que cython 0.25.2 fonctionnait pour moi. Vous pouvez supprimer votre version précédente et installer celle que vous avez choisie avec :

sudo pip3 install -U --force-reinstall cython=0.25.2

Si vous êtes sous Ubuntu, bien sûr :)

Et voilà, vous l'avez. Vous devrez créer plusieurs apks pour les différentes architectures en modifiant l'option arch dans votre buildozer.spec et en cours d'exécution buildozer android debug pour chaque architecture. Vous pouvez toujours publier sur le play store car Google a la possibilité de télécharger plusieurs apks : https://developer.Android.com/google/play/publishing/multiple-apks .

Bonne chance ;P

EDIT les commandes python-for-Android à l'aide de SDK 20 / API 26 / NDK 15c / Python 3.7 et SDK 20 / API 24 / NDK 14b / Python 3.7 travail. Je n'ai pas personnellement testé ce dernier, mais vous trouverez plus d'informations à ce sujet sur le site suivant post python-for-Android . Ayant testé le premier, je peux vérifier qu'il fonctionne mais ne supporte pas sqlite3 .

8voto

Gerardo Medina Points 279

J'ai dû créer un nouvel apk avec un VersionCode plus élevé que l'application actuellement installée.

Mon simulateur avait la version 8 et lorsque j'ai essayé d'installer un nouvel apk avec la même version, j'ai obtenu l'erreur que vous mentionnez. La solution a donc été d'augmenter le code de version et de générer un nouvel apk.

Faites-le dans le fichier build.gradle (Module : App)

android {
    defaultConfig {
        versionCode 9          <---
        versionName "1.1.0"    
        ...
    }
    ...
}

Une autre solution consiste à désinstaller l'application actuelle et à installer le nouvel apk.

3voto

Qasim Points 1496

Pour moi, sur l'image système de l'émulateur Android 9 (API 28), la désactivation de Google Play Protect dans l'application Play Store a fonctionné et j'ai pu me débarrasser de l'erreur d'analyse.

Pour désactiver Google Play Protect. Ouvrez l'application "Play Store" => tapez sur le bouton Menu => sélectionnez l'option "Play Protect" => Désactivez les options "Analyser l'appareil à la recherche de menaces de sécurité".

0 votes

Merci. Je me demandais pourquoi le fichier .apk de Kivy-Buildozer n'était pas installé et qu'il n'y avait pas d'erreur - aucune raison pour ce comportement.

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