web-dev-qa-db-fra.com

L'APK n'a pas pu s'installer. Erreur: impossible d'analyser la chaîne d'erreur

Glisser et déposer un package Android * .APK dans un AVD (Android Virtual Device) génère une erreur cryptique:

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 python Kivy APK construit avec buildozer
  • Je suis nouveau dans le développement Android. Je ne sais même pas par où commencer pour déboguer cela. Y a-t-il un meilleur journal?
  • Si je télécharge le fichier APK sur l’AVD via le gestionnaire de fichiers et l’installe, il échoue également.
  • CEPENDANT, si je télécharge le même fichier APK sur mon appareil Android actuel, CELA FONCTIONNE! Non seulement cela installe-t-il, mais il ouvre et exécute mon application correctement sans erreurs
  • Les sources inconnues sont autorisées

    (int) API Android à utiliser

    Android.api = 24

    (int) API minimum requise

    Android.minapi = 24

    (int) version du SDK Android à utiliser

    Android.sdk = 24

    (str) version Android NDK à utiliser

    Android.ndk = 9c

 enter image description here

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

8
Jonathan

CEPENDANT, si je télécharge le même fichier APK sur mon appareil Android actuel, CELA FONCTIONNE! Non seulement cela installe-t-il, mais il ouvre et exécute mon application correctement sans erreurs

Cela me dit que c'est peut-être parce que votre application utilise des bibliothèques natives qui ne correspondent pas à l'architecture de l'émulateur CPU (voir cette 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 ceci:

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

9
Melquiades

Je devais créer un nouvel apk avec un VersionCode plus élevé que l'application actuellement installée.

Mon simulateur possédait la version 8 et, lorsque j'essayais d'installer un nouvel apk avec la même version, l'erreur que vous avez mentionnée commençait. La solution consistait donc à augmenter le code de version et à 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.

5
Chuy47

Je faisais face au même problème. Le problème est que si la même application est déjà installée avec la même version sur l'émulateur, elle ne sera pas mise à jour/installée et la même erreur sera générée. 

Essayez les solutions suivantes pour résoudre ce problème.

  1. Désinstallez l'ancien APK de Emulator, puis faites glisser le nouvel APK et déposez-le, il installerait l'application

  2. Modifiez le fichier numéro de version à partir du fichier Build.gradle comme suggéré par @ Chuy47, créez le nouvel APK et installez-le.

J'espère que ça aide.

5
Bilal

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

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

1
Qasim

Après avoir moi-même longtemps souffert de ce problème après avoir construit un apk avec p4a en utilisant l'indicateur armeabi-v7a, j'ai découvert le problème, comme indiqué dans @Melquiades answer, l'émulateur par défaut utilise l'architecture x86; .

La solution consiste à créer votre apk pour x86, ce que vous pouvez faire en le spécifiant dans la commande de création p4a à l'aide de l'indicateur Arch - --Arch=x86. Vous pouvez voir les options disponibles ici: https://github.com/kivy/python-for-Android/blob/master/pythonforandroid/archs.py

Personnellement, exécuter python3crystax ndk avec un indicateur autre que armeabi-v7a n'a pas permis de trouver les fichiers binaires appropriés. L'exécution à l'aide de python3 et du ndk Android a également échoué pour toutes les architectures.

Si vous utilisez python3 et souhaitez construire pour toutes les architectures, vous pouvez utiliser buildozer. Spécifiez python3crystax dans la configuration requise pour buildozer.spec, liez le répertoire ndk sur la ligne Android.ndk_path et spécifiez l'architecture 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/ . Vous devrez peut-être rétrograder ou mettre à niveau votre version cython, selon votre configuration actuelle. Notez que 0.27, 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 votre choix avec:

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

Si vous utilisez Ubuntu bien sûr :)

Et voila. Vous devez créer plusieurs apks pour les différentes architectures en modifiant l'option Arch dans votre buildozer.spec et en exécutant 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

MODIFIER les commandes python pour Android à l'aide de SDK 20 / API 26 / NDK 15c / Python 3.7 et SDK 20 / API 24 / NDK 14b / Python 3.7 fonctionnent. Je n'ai pas personnellement testé ce dernier, mais vous trouverez plus d'informations dans cet article python-for-Android . Après avoir testé le premier, je peux vérifier que cela fonctionne mais ne prend pas en charge sqlite3

1
TellMeWhy

Faire ce qui suit a semblé résoudre le problème:

  • Passage à la construction via machine virtuelle kivy sur une boîte virtuelle (buildozer ne prend pas en charge toutes les machines construites)
  • Commentez ensuite les paramètres du SDK buildozer (en revenant aux versions par défaut du SDK) dans buildozer.spec (biuldozer ne prend pas en charge tous les SDK)
0
Jonathan

essayez ceci: cela fonctionne mieux pour moi.

 enter image description here

Étape 1 . Projet propre

Étape 2 . Projet de reconstruction

Étape 3 . Run App

J'espère que ça t'aide.

0
Jaydeep Dobariya

J'ai réussi à résoudre ce problème en renommant le fichier apk et en veillant à ce que:

  1. n'a pas d'espaces. 
  2. ne commence pas par le numéro

J'espère que ça vous aide.

0
Atef Farouk

Cela a fonctionné pour moi .....

  • Ouvrir Play Store 
  • Aller au menu 
  • Tap Play Play Protect
  • Désactiver le périphérique d'analyse pour les menaces de sécurité
0
cHAuHaN

Pouvez-vous vérifier la version minimale de sdk pour cette application? Et la version Android de vos appareils virtuels

La version AVD doit être supérieure ou égale à la version sdk minimale de l'application.

Si c'est le cas, essayez d'activer le débogage USB. 

0
Eldhopj