"Erreur d'analyse: un problème est survenu lors de l'analyse du package" lors de l'installation de l'application Android

104

J'ai eu cette erreur lors de l'installation de l'application Android ( Parse Error : There is a problem parsing the package.). J'ai fait les étapes suivantes.

  1. La première fois que j'ai installé l'application et cela fonctionne bien.

  2. J'ai apporté des modifications à l'application existante et changé le numéro de version dans le fichier manifeste.

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openintents.samples.BasicOpenARDemo" android:versionCode="2" android:versionName="1.0.1">
  3. Ensuite, j'exporte l'application et termine le processus de signature de code. Pour cela, cliquez avec le bouton droit sur le nœud de votre projet> sélectionnez Exporter. Là, vous verrez un assistant. Suivez les étapes et terminez également la signature du code.

  4. J'ai le fichier ARDemo.apk, puis j'ai changé son nom en ARDemo1.apk

  5. Ensuite, j'ai expédié ce fichier apk sur la carte SD des mobiles et j'ai commencé l'installation, j'ai eu l'erreur ci-dessus.

J'ai googlé, ils disent que le problème avec le décompression du fichier manifeste.

Quelqu'un peut-il me dire ce qui ne va pas avec moi?

Raghu
la source
vous devriez mettre le numéro de version sur trois. veuillez vous référer au tutoriel japonais sur le site
Salut Ejder, Merci pour votre réponse. Mon problème était déjà résolu. Mon erreur est "J'ai changé le nom du fichier apk manuellement". Au-dessus de 2, le code de la version de mon application n'est pas la valeur minsdk. J'ai mis la valeur minsdk à 3. Merci et salutations, Raghavendra K
Raghu
4
penser simplement pourquoi le changement de nom est-il devenu un problème?
Mikey
Bonjour Mike, j'ai changé le nom après l'exportation. C'est pourquoi il donne une erreur. Si nous spécifions un nom de différence lors de l'exportation, cela ne peut pas être un problème pour moi ..
Raghu
1
Bonjour Cru, Changer de version non ne crée pas ce problème. J'ai renommé le fichier apk une fois que j'ai effectué l'exportation. Cela crée ce problème.
Raghu

Réponses:

49

Vous avez dit que la première fois que vous avez installé l'application, cela fonctionnait bien.

La seule différence dans les étapes que vous avez décrites entre les deux versions est:

  1. Le numéro de version (je suppose que cela n'a pas contribué à casser quoi que ce soit)
  2. Le code
  3. Le nom du fichier .apk

Essayez de renommer le fichier ARDemo1.apk en ARDemo.apk (assurez-vous de sauvegarder l'ancienne version) et voyez si cela aide. Je suppose que cela a quelque chose à voir avec le nom de l'apk.

Si cela ne fonctionne toujours pas, vous pouvez éliminer le nom du fichier apk comme source du problème et commencer à enquêter 2) en reconstruisant votre ancienne version et voir si vous rencontrez à nouveau le même problème. Si le problème n'existe pas avec la version reconstruite de votre ancien code, vous savez que cela doit être lié à votre code.

J'espère que cela vous mènera quelque part.

Bravo, Joseph

user175750
la source
Salut Joseph, votre estimation est correcte. J'ai renommé le fichier apk en un fichier antérieur. Cela fonctionne ... Merci beaucoup pour votre aide .....
Raghu
Salut, je suis confronté à un problème similaire. Je télécharge l'application à partir d'un lien Web. Il se trouve parfaitement sur la SDCard mobile. Mais lorsque j'essaie de l'installer, cette erreur s'affiche. Je n'ai pas signé mon application, je suis essentiellement un débutant dans le développement d'applications Android. Toute aide est appréciée :)
varunrao321
2
J'ai fait face au problème similaire et le cas était la version minimale du SDK dans le fichier .gradle. Pensez à cela et à la version de votre appareil et ce sera utile.
user2881604
Ya, vous avez raison, c'était le problème du nom de fichier apk ...!
Arsal Imam
J'ai renommé le fichier apk et le fichier parse errorest parti, mais en essayant de l'installer maintenant, il me montre que App not installedj'utilise un appareil guimauve et peut-être que c'est le même que le problème ici stackoverflow.com/questions/33930223/…
natsumiyu
45

L'installation peut donner l'erreur spécifiée au moins dans les cas suivants:

  • Le nom du package est modifié après la signature : utilisez le nom exact tel que le package signé (à la place, ajustez le nom dans Manifest)
  • Le package est compilé à un niveau d'API supérieur : corrigez le niveau d'API dans le fichier manifeste
  • Le paquet est exécuté à partir de la carte SD : exécutez (installez) le fichier apk à partir de la mémoire du téléphone OU utilisez la commande adb pour l'installer
jmu
la source
Je pense qu'il y a d'autres conditions qui peuvent rendre cela possible. Par exemple, voir mon commentaire sur la réponse de kansasian ci-dessous sur l'obtention de ce message d'erreur lors de l'installation à partir d'un courrier électronique.
M Katz le
Meilleure réponse ici. Pour moi, cela changeait le nom du paquet après sa signature. Merci beaucoup.
Jannie Theunissen
Je suppose que vous devez avoir un téléphone rooté pour pouvoir l'installer en utilisant adb installnon?
abbood
Non: l'enracinement n'est pas nécessaire - vous devrez peut-être activer les sources inconnues à partir des paramètres de sécurité. (non confirmé)
jmu
Sources inconnues ET débogage USB ... note: dans Windows 8 parfois, il ne reconnaîtra pas le téléphone en mode MTP, uniquement PTP ...
SparK
22

Je n'ai vu l'erreur d'analyse que lorsque la version Android sur l'appareil était inférieure à la version pour laquelle l'application a été compilée. Par exemple, si l'application est compilée pour Android OS v2.2 et que votre appareil n'a que Android OS v2.1, vous obtiendrez une erreur d'analyse lorsque vous essayez d'installer l'application.

Monsieur Scalawag
la source
J'ai été frappé par ça il y a quelque temps, j'ai mis du temps à comprendre!
olafure
14

La raison en est que apk n'est pas signé. Une fois l'apk signé, le problème sera résolu. http://ionicframework.com/docs/guide/publishing.html Veuillez utiliser le lien sur les instructions pour signer l'apk.

Shivendra
la source
Même problème ici. Après avoir signé l'apk, cela a fonctionné comme prévu.
Dino Tw
3
C'était un problème pour moi avec les versions Xamarin Android - il crée d'abord un APK dans le gestionnaire d'archives qui n'est pas signé. Vous devez ensuite choisir «Distribuer» pour créer un APK signé pouvant être installé.
dodgy_coder
Ajout à ce que dodgy_coder a écrit: pour Xamarin.Android 7 ou supérieur ou versions antérieures .
Veverke
13

Au lieu de filmer dans le noir, obtenez la raison de cette erreur en l'installant via adb:

adb -s emulator-5555 install ~/path-to-your-apk/com.app.apk

Remplacez emulator-5555par le nom de votre appareil. Vous pouvez obtenir une liste en utilisant:

adb devices

En cas d'échec, cela donnera une raison. Raisons courantes et leurs correctifs:

  1. INSTALL_PARSE_FAILED_NO_CERTIFICATES: Référence
  2. INSTALL_FAILED_UPDATE_INCOMPATIBLE: Référence
Veneet Reddy
la source
Que dois-je faire si cela réussit?
Jacob Sánchez du
1
Cela m'a beaucoup aidé. Merci!
Tgo1014 le
7

Vérifiez si votre appareil prend en charge la version que vous avez spécifiée dans minSdkVersion dans AndroidManifest.xml. Sinon, spécifiez la version inférieure et réessayez

Mohammed Irfan Tirupattur
la source
6

Si vous compilez et exportez votre fichier apk sous la version 2.1 du SDK, il ne fonctionnera sur aucune version Android en dessous de votre exportation SDK "2.1". Le logiciel Android est compatible vers l'avant et non rétrocompatible. Par exemple, si vous programmez à l'aide du package Android NDK (add-on ann du SDK Android) qui permet le développement dans la famille C / C ++, il n'est compatible qu'avec Android 2.3, la version Android 2.2 et les versions antérieures ne prennent en charge que les versions Java. Par conséquent, vous réafficherez l'erreur «Il y a un problème lors de l'analyse du package».

Mike
la source
3

Une autre possibilité est que vous ayez enregistré le fichier apk dans le dossier PRIVATE de l'application, puis que vous essayez d'installer (en démarrant une intention à partir de votre code). dans ce cas, lorsque vous démarrez l'intention, vous obtenez un package d'analyse d'erreur. Dans ce cas, l'erreur soulevée concerne les problèmes d'autorisation. L'enregistrement du fichier dans des dossiers privés n'est pas une bonne pratique, mais si vous voulez vraiment faire cela, vous devez écrire le fichier dans MODE_WORL_READABLE lorsque vous le téléchargez. Veuillez noter que MODE_WORLD_READABLE est obsolète et que cette solution n'est pas la meilleure car elle présente des problèmes de sécurité. Le mieux est de sauvegarder votre fichier dans un stockage externe.

MojAmiri
la source
3

Je ne répète pas ce qui est indiqué ici pour saisir le magasin de clés, le mot de passe, etc. Essayez

Construire -> Générer un APK signé -> [Entrée] --- Suivant ---> sélectionnez LES DEUX

  • V1 (Signature du pot)
  • V2 (Signature APK complète)

Je ne sais pas pourquoi, mais au moins cela a fonctionné dans ma situation.

JeffNhan
la source
1
A travaillé pour moi. Il n'a pas été vérifié dans Android Studio MacOS par défaut.
vojta
2

J'ai eu la même erreur (Erreur d'analyse, il y a un problème d'analyse du package) en essayant d'installer un package .apk à partir d'un e-mail. J'ai pu contourner le problème en installant le programme d'installation du package tiers ApKatcher:

http://www.addictivetips.com/mobile/install-android-apps-from-gmail/

ApKatcher n'est pas la seule solution. Un de mes collègues a contourné le problème en installant Astro File Manager.

Vous pouvez trouver les deux applications sur Android Marketplace.

kansasien
la source
Pour ajouter un autre point de données ici, j'obtenais également cette erreur lors de l'installation à partir d'un courrier électronique, mais elle s'est bien installée lorsque j'ai utilisé un cordon et un adb pour installer le même package. Malheureusement, j'essayais d'installer via Yahoo Mail, donc je ne pense pas qu'ApKatcher puisse vous aider.
M Katz
1

Problème similaire, en utilisant ce code "emprunté" et légèrement modifié:

                Intent intent = new Intent(Intent.ACTION_VIEW);
                File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "myapp.apk");
                intent.setDataAndType(Uri.fromFile(newApk), "application/vnd.android.package-archive");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                result = true;

Nécessaire pour changer la création du fichier en ceci (virgule au lieu de plus dans le constructeur de fichier, il manquait '/' après le répertoire de téléchargement):

                    File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "myapp.apk");
William T. Mallard
la source
1

J'avais une mauvaise paire de balises dans mon fichier manifeste.

<meta-data>
</meta-data>

Fondamentalement, je suis entré lorsque j'ai copié un mauvais meta-dataexemple de code à partir d'un fichier pdf payu. Merde.

Siddharth
la source
1

L'une des raisons pourrait être que le nom de votre activité n'est pas défini dans le manifeste

    <activity
          android:name=""
          ...>
</activity>

le code ci-dessus créait le même problème avec moi

Abhishek
la source
1

Un autre problème à l'origine de cette erreur peut être l'installation d'APK à partir d'un point de montage de carte SD restreint /mnt/media_rw/MicroSD .

Utilisez un point de montage illimité /Removable/MicroSD.

Honza
la source
1

Et juste pour aider d'éventuels nouveaux lecteurs, une autre raison peut être des erreurs dans le fichier manifeste. Je l' avais mal orthographié android:servicecomme android.serviceet a couru dans la même erreur ...

MortenSickel
la source
1

Comme mentionné par @Veneet Reddy, installez-le via ADB.

Accédez à ADT Bundle / sdk / platform-tools après votre .apkfichier et exécutez l'invite de commande en tant qu'administrateur.

Exécutez ensuite la adb devicescommande qui listera les périphériques connectés ou les émulateurs en cours d'exécution.

entrez la description de l'image ici

Puis cours adb -s yourDeviceID install yourApk.apk

entrez la description de l'image ici

Remarque: désinstallez l'application si vous l'avez déjà installée avant de réinstaller.

Muhammad
la source
0

Pour toute autre personne ayant ce problème, la seule fois où j'ai eu cette erreur, c'est lorsque la version de l'API dans votre configuration Android Build ne correspond pas à ce qui se trouve sur l'appareil physique.

Allez dans Eclipse et faites un clic droit sur votre projet et allez dans les propriétés. Sélectionnez Android - QUI VOUS APPORTE À LA CIBLE ANDROID BUILD. Ajustez votre cible pour qu'elle corresponde à l'appareil et voyez si cela résout le problème.

j2emanue
la source
0

J'ai eu ce problème, même lorsque j'ai spécifié la version correcte de minSDK et de targetSDK. Mon problème était que j'utilisais "android:theme="@android:style/Theme.NoTitleBar.Fullscreen"dans l'activité du lanceur, sur un appareil Jellybean. Lorsque j'ai supprimé cet attribut, cela a fonctionné.

utilisateur1035292
la source
0

Comme quelques autres réponses l'ont mentionné, il peut y avoir des problèmes lors de l'installation à partir de la carte SD. Dans mon cas, je distribuais mon application via une pièce jointe à un e-mail, et cela fonctionnait généralement bien. Ouvrez simplement l'e-mail et téléchargez la pièce jointe (elle va apparemment sur la carte SD) et cliquez à nouveau dessus et elle est installée.

Mais un jour, cela n'a pas fonctionné, et il s'est avéré que c'était parce que j'avais le téléphone connecté à mon PC de développement via USB, et cela a placé la carte SD dans un mode différent ou quelque chose du genre. La solution consistait donc simplement à déconnecter le téléphone du PC, puis à renvoyer l'e-mail et à télécharger à nouveau la pièce jointe. Ou bien placez la connexion USB en mode "chargement uniquement" pour que la carte SD ne soit pas "connectée" au PC.

RenniePet
la source
0

Vous voudrez peut-être également vérifier les journaux sur l'appareil pour voir s'il s'agit de quelque chose de simple comme un problème d'autorisations. Vous pouvez vérifier les journaux à l'aide adbd'un ordinateur hôte / de débogage:

adb logcat

Ou si vous avez accès à la console (ou lorsque vous utilisez Android-x86, obtenez la console en tapant Alt+ F1), vous pouvez vérifier les journaux en utilisant la logcatcommande:

logcat
Pierz
la source
0

J'ai eu le même problème en utilisant le fichier apk exporté depuis android‌ Tools > Export. J'ai utilisé le fichier apk dans le dossier bin à la place et cela a fonctionné!

Le fichier apk PS dans le dossier bin est créé après la première exécution de l'application dans eclipse.

Ali Sheikhpour
la source
0

utilisez-le dans build.gradle (Module: app)

 minSdkVersion 14
    targetSdkVersion 28
SHUBHASIS MAHATA
la source
Vous devez expliquer pourquoi les versions min 14 et 28 sont ciblées. Vérifiez également votre mise en forme;)
m02ph3u5
0

J'ai eu ce problème que Parse Error : There is a problem parsing the package. je testais sur Android-8. J'ai le même apk avec la même signature. Tout était pareil sans le numéro de version et le nom de la version. L'application était en cours d'installation lorsque je l'installais manuellement, mais cette erreur s'est produite lors du téléchargement et de l'installation des mises à jour par programme. Ensuite, j'ai trouvé la cause de mon problème.

Il y avait une option pour vérifier canRequestPackageInstalls () Lorsque cette méthode retourne true, l'application est installée avec succès. C'était toujours faux dans mon cas.

Donc, je vérifie d'abord cela, puis je laisse l'utilisateur télécharger et installer les mises à jour.

Dans onCreate ()

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            if (!packageManager.canRequestPackageInstalls()) {
                    startActivityForResult(
                        Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).setData(
                            Uri.parse(String.format("package:%s", packageName))
                        ), requestCodeqInstallPackage
                    )
                } else {
                    canInstallPackage = true
                }

        }

Dans onActivityResult ()

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
            if (requestCode == requestCodeqInstallPackage && resultCode == Activity.RESULT_OK) {
                if (packageManager.canRequestPackageInstalls()) {
                    canInstallPackage = true
                }
            } else {
                canInstallPackage = false
                Toast.makeText(mContext, "Auto update feature will not work", Toast.LENGTH_LONG)
                    .show()
            }
    }

Ensuite, lorsque vous devez installer la mise à jour,

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
   if(canInstallPackage){
      doInstallAppProcess()
   }else{
        // generate error message
   }
}

J'espère que cela aidera quelqu'un.

Rasel
la source
-1

Je rencontre le même message d'erreur «Erreur d'analyse: il y a un problème lors de l'analyse du package» avec mes fichiers APK signés comme d'autres, mais je pense que cela pourrait être causé par différentes raisons.

Pour tester cela, j'ai fait ce qui suit:

Configuration de Windows 8.1 Eclipse ADT Build: v22.6.2-1085508

J'ai généré une nouvelle application Helloworld typique acceptant toutes les valeurs par défaut.

J'ai exécuté l'application sur un émulateur et un appareil en direct avec succès.

J'ai ensuite téléchargé et installé l'apk sur mon appareil en direct et l'ai exécuté avec succès.

Il avait généré un apk dans le dossier bin d'une taille de 782 Ko.

J'ai ensuite exporté l'application Helloworld dans le même dossier bin en signant l'application de mon magasin de clés qui a été utilisée avec succès dans le passé pour promouvoir sur Google Play.

Il a créé un APK d'une taille de 385 Ko (en remplacement de l'apk d'origine).

J'ai téléchargé l'apk sur mon appareil et quand je suis allé l'installer, j'ai eu l'erreur «Erreur d'analyse: il y a un problème d'analyse du paquet» (c'est le même paquet qui a été chargé et installé lorsqu'il est fait comme un formulaire non exporté).

William Bell
la source