226 votes

android: quel est l'erreur INSTALL_PARSE_FAILED_NO_CERTIFICATES?

J'essayais de changer mon activité par défaut / main / startup (comme vous l'appelez) en modifiant le fichier androidmanifest.xml . Tout ce que j'ai fait était de changer la propriété android:name . Cependant, cela a complètement cassé l'application entière. quand j'essaye de l'installer échoue et lit

Erreur d'installation: INSTALL_PARSE_FAILED_NO_CERTIFICATES

quand j'ai essayé de le remettre à son état précédent, il me donnait toujours la même erreur ... qu'est-ce que j'ai fait!?!?!

73voto

Dave Webb Points 90034

Avez-vous modifier l' AndroidManifest.xml directement dans l' .apk le fichier? Si oui, cela ne marchera pas.

Chaque Android .apk doit être signé si elle est destinée à être installée sur un téléphone, même si vous n'êtes pas l'installation par le biais du Marché. Le développement des outils de travail autour de ce par la signature avec un certificat de développement, mais l' .apk est encore signé.

Une utilisation de ceci est donc un appareil capable de vous 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 l' .apk de sorte qu'il devient signé correctement.

54voto

Chloe Points 2737

Je trouvais que c'était à cause de ma version du JDK.

J'ai eu ce problème avec les "fourmis" et c'était en raison de cette PRUDENCE mentionnés dans la documentation:

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

Attention: Comme de JDK 7, la valeur par défaut de signature de algorithim a changé, vous demandant de spécifier la signature et de digérer algorithims (-sigalg et -digestalg) lorsque vous vous connectez à un fichier APK.

J'ai JDK 7. Dans mon Ant journal, 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 POT manuellement et zipaligned, mais il a donné un peu d'erreur différents:

$ "$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é que la réponse est ici.

La façon de traiter avec INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES sans désinstallation

J'ai seulement besoin de le désinstaller, puis il a travaillé!

$ 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 j'ai seulement besoin de modifier le build.xml pour utiliser ces options lors de la signature!

Ok elle est ici: C:\Program Files\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}" />

36voto

JanCor Points 81

La plupart du temps, la solution à cette erreur est très simple:

  1. Désinstallez votre apk.
  2. Nettoyez votre projet Android.
  3. Construisez votre projet Android.
  4. installer / exécuter votre apk

S'amuser

18voto

résolu (pour moi) en utilisant dans keytool les arguments

 -sigalg MD5withRSA -keyalg RSA -keysize 1024
 

et en utilisant jarsigner

 -sigalg MD5withRSA -digestalg SHA1
 

solution trouvée dans

Quel type de pitfals existe pour la signature Android APK

5voto

Ixx Points 7104

C'est moche mais rapide de la solution: utiliser le JDK 6 au lieu de 7.

Après l'avoir lu Chloe réponse, j'ai désinstallé mon JDK 7 (n'en avez pas besoin actuellement de toute façon) et installé le JDK 6. Qu'il fixe. Une meilleure solution serait de faire des ant utilise le JDK 6 (sans désinstaller 7). Peut-être possible de changer / la définition de cette propriété:

java.de la bibliothèque.chemin

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

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

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