QU'est-ce que INSTALL PARSE a échoué sans erreur de certificats?

j'essayais de changer mon activité par défaut/main/startup (quel que soit son nom) en éditant le fichier androidmanifest.xml . Tout ce que j'ai fait, c'est changer la propriété android:name . cependant, cela a complètement cassé l'application entière. quand j'essaie d'installer, il ne fonctionne pas et lit.

erreur D'Installation: INSTALL_PARSE_FAILED_NO_CERTIFICATES

quand j'ai essayé de le ramener à son état précédent, il me donnait toujours le même erreur... Qu'ai-je fait?

102
demandé sur Ronan Boiteau 2010-05-26 18:58:58

15 réponses

avez-vous édité le AndroidManifest.xml directement dans le fichier .apk ? Si oui, cela ne marchera pas.

chaque Android .apk doit être signé si elle doit être installée sur un téléphone , même si vous n'installez pas à travers le marché. Les outils de développement fonctionnent autour de cela en signant avec un certificat de développement mais le .apk est toujours signé.

une utilisation de ce est donc un dispositif peut dire si un .apk est une mise à niveau valide pour une application installée, car si c'est les Certificats seront les mêmes.

Donc, si vous apportez des modifications à votre application, vous aurez besoin de reconstruire le .apk de sorte qu'il devient signé correctement.

43
répondu Dave Webb 2016-12-09 11:47:45

j'ai trouvé que cette erreur peut maintenant se produire aussi en utilisant la mauvaise configuration de signature. Comme décrit ici , Android 7.0 introduit un nouveau schéma de signature, V2 . Le schéma V2 signe L'ensemble de L'APK plutôt que le JAR, comme le fait le schéma V1. Si vous signez avec seulement V2, et tentez d'installer sur une cible pre-7.0, vous obtiendrez cette erreur puisque les bocaux eux-mêmes ne sont pas signés et le pré-7.0 PackageManager ne détecte pas la présence de la signature APK V2.

pour être compatible avec tous les systèmes cibles, assurez-vous que L'APK est signé avec les deux schémas en cochant les deux boîtes de version de signature dans générer signé APK dialogue comme montré ici:

enter image description here

si seulement 7.0 cibles sont prévues, il n'est pas nécessaire d'inclure la signature V1.

112
répondu Paul Ratazzi 2017-03-29 15:34:40

j'ai trouvé que c'était causé par ma version JDK.

j'avais ce problème avec 'ant' et c'était dû à cette mise en garde mentionnée dans la documentation:

http://developer.android.com/guide/publishing/app-signing.html#signapp

attention: à partir de JDK 7, la signature par défaut algorithim a changé, vous demandant de spécifier la signature et de digérer algorithims (- sigalg et - digestalg) quand vous signez un APK.

j'ai JDK 7. Dans mon livre de fourmi, j'ai utilisé-v pour verbose et il a montré

$ ant -Dadb.device.arg=-d -v release install
[signjar] Executing 'C:\Program Files\Java\jdk1.7.0_03\bin\jarsigner.exe' with arguments:
[signjar] '-keystore'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\release.keystore'
[signjar] '-signedjar'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unaligned.apk'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unsigned.apk'
[signjar] 'mykey'
 [exec]     pkg: /data/local/tmp/PairFinder-release.apk
 [exec] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

j'ai signé le bocal manuellement et l'ai zipaligné, mais il a donné une erreur légèrement différente:

$ "$JAVA_HOME"/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore release.keystore -signedjar bin/PairFinder-release-unaligned.apk bin/PairFinder-release-unsigned.apk mykey
$ zipalign -v -f 4 bin/PairFinder-release-unaligned.apk bin/PairFinder-release.apk
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
641 KB/s (52620 bytes in 0.080s)

j'ai trouvé la réponse ici.

Comment faire avec INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES sans désinstallation parce que

j'avais seulement besoin de le désinstaller et puis ça a marché!

$ adb -d uninstall com.kizbit.pairfinder
Success
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Success
641 KB/s (52620 bytes in 0.080s)

maintenant je n'ai besoin que de modifier la construction.xml pour utiliser ces options lors de la signature!

Ok voici: C:\Program fichiers\Java\android-sdk\tools\ant\build.xml

            <signjar
                    sigalg="MD5withRSA"
                    digestalg="SHA1"
                    jar="${out.packaged.file}"
                    signedjar="${out.unaligned.file}"
                    keystore="${key.store}"
                    storepass="${key.store.password}"
                    alias="${key.alias}"
                    keypass="${key.alias.password}"
                    verbose="${verbose}" />
51
répondu Chloe 2017-05-23 12:18:30

résolu (pour moi) en utilisant dans un clavier l'args

-sigalg MD5withRSA -keyalg RSA -keysize 1024

et en utilisant dans jarsigner

-sigalg MD5withRSA -digestalg SHA1

solution trouvée dans

Quel genre de pitfals existe pour la signature apk Android?

15
répondu Alejadro Xalabarder 2017-05-23 12:26:34

la plupart du temps, la solution pour cette erreur est vraiment simple:

  1. désinstallez votre apk
  2. nettoyer votre projet Android
  3. construire votre projet Android
  4. Installer / exécuter votre apk
6
répondu JanCor 2018-07-23 15:48:26

c'est une solution moche mais rapide: utilisez JDK 6 au lieu de 7.

après avoir lu la réponse de Chloé, j'ai désinstallé mon JDK 7 (Je n'en ai pas besoin actuellement) et installé JDK 6. Qu'il fixe. Une meilleure solution rendrait ant uses JDK 6 (sans désinstaller 7). Peut-être possible Modifier / définir cette propriété:

de java.bibliothèque.chemin

dans local.fichier de propriétés. C'est dans le répertoire du projet (racine).

Android ne fonctionne pas avec JDK 7 de toute façon (seulement 6 ou 5), donc faire que le script ant utilise également JDK 6 ou 5 est probablement une bonne solution.

5
répondu Ixx 2012-05-11 11:48:53

dans mon cas, je pouvais compiler et exécuter des compilations, mais j'ai eu l'erreur INSTALL_PARSE_FAILED_NO_CERTIFICATES en essayant de faire une compilation de débogage.

la solution était de supprimer mon fichier debug.keystore et laisser ADT le recréer. Il avait apparemment expiré.

une meilleure solution à long terme est de créer explicitement un debug.keystore qui n'expire pas après seulement un an, au lieu de laisser ADT le créer. Voici la commande pour le faire:

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000

entrez ces valeurs:

  • prénom et nom de famille: Android Debug
  • unité organisationnelle: Android
  • nom de l'organisation: inconnu
  • ville ou localité: inconnu
  • État ou Province: inconnu
  • code de pays: US
4
répondu Kristopher Johnson 2013-10-10 18:08:44

Réglage de la variable d'environnement JAVA_HOME pour JDK 5 ou 6 (au lieu de JDK 7) correction de l'erreur.

2
répondu TN. 2012-06-04 09:16:24

cela pourrait se produire si vous essayez d'inclure une bibliothèque .jar qui contient un fichier AndroidManifest.xml .

  • si C'est du pur Java, assurez-vous de ne pas l'inclure dans le .pot d'exportation
  • si ce N'est pas du pur Java (ce qui signifie que c'est un projet Android) alors vous devez l'inclure comme un projet de bibliothèque
2
répondu znat 2013-11-02 19:26:08

Its parce qu'il y a un conflit dans la version signature entre v1 (signature jar) et v2(signature APK complète),

Pour corriger tique signature de la version en vertu de Générer Signé APK boîte de dialogue

2
répondu Pankaj kumar 2017-03-31 15:46:15

après un certain temps et de multiples threads en ligne sur le sujet, j'ai réussi à corriger mon projet.

c'est principalement en prenant en considération les derniers fichiers ( pourrait être des images ou des layouts ) que vous mettez en. Si vous les supprimez, cela marchera, et vous pourrez reconstruire votre projet à nouveau.

0
répondu Nelson R. 2012-10-20 03:49:42

j'avais cette erreur dans ma Console Eclipse. Il s'avère que j'avais deux bocaux avec le même contenu mais des noms différents et ils étaient en conflit l'un avec l'autre. Je viens d'en supprimer un et j'ai réussi à installer l'application sur l'appareil.

0
répondu joao2fast4u 2014-08-22 13:38:32

j'ai eu cette erreur parce que j'ai publié que mon ant release était en panne parce que je n'avais plus d'espace disque.

0
répondu Red Cricket 2016-06-17 05:07:08

j'ai eu cette erreur quand j'ai essayé d'installer un projet Xamarin construit contre Android n preview sur un téléphone tournant api v23. La Solution est de ne pas faire ça.

0
répondu James Moore 2016-06-27 18:25:52

une autre façon d'obtenir cette erreur est de construire en utilisant ant sur macOS et avoir un fichier d'icône de Finder ( Icon\r ) dans l'arbre des sources de l'application. Il apparaît jarsigner ne peut pas faire face au retour de chariot dans le nom de fichier et, bien qu'il va prétendre que la signature est valide si vous -verify L'APK, il en résulte toujours un APK qui ne sera pas installer sur un appareil. Ironiquement, le plugin Google Drive Finder est une excellente source de fichiers d'icônes de Finder.

le la solution est d'exclure les fichiers offensants (qui sont inutiles dans L'APK de toute façon) avec un spécificateur comme celui-ci dans le fileset :

    <exclude name="**/Icon&#13;" />
0
répondu Perry 2017-03-07 05:30:38