2010-03-31 6 views
2

J'ai fait une apk signée d'un projet android. Chaque fois que mon client essaie de l'exécuter sur l'émulateur, il fait face au message d'erreur suivant:Pourquoi apk Android signé ne fonctionne pas sur l'émulateur

D:\Android\android-sdk- 
windows\tools>adb install -r abc.apk 
500 KB/s (6940708 bytes in 13.534s) 
     pkg: /data/local/tmp/abc.apk 
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] 

Quelle est la résolution?

+1

Une version non signée de votre application est-elle déjà installée sur l'émulateur? – Janusz

+1

Je sais que vous dites qu'il est signé, mais cette erreur msg me semble que ce n'est pas le cas. – SteelBytes

Répondre

15

Dans mon cas, ce fut parce que je l'ai signé sur un La machine exécutant JDK 7. La mise à niveau vers JDK 6 a résolu le problème. Merci java.lang.SecurityException when install apk pour la suggestion!

+7

Si vous vous connectez avec jarsigner et avez JDK 7, vous pouvez ajouter les options "-digestalg SHA1 -sigalg MD5withRSA" à la commande jarsigner et cela fonctionnera avec JDK7. – gravitron

+0

Vous pouvez également garder JDK 7 et le réparer en passant à Ant 1.8.3 ou plus tard .... –

+0

Comment @GregEnnis. Pouvez-vous élaborer s'il vous plaît? – AbdulSaleem

-1

Vous pouvez vérifier si le client n'a pas désactivé l'installation d'applications non signées dans l'émulateur.

+0

Toutes les applications doivent être signées; un périphérique Android (ou un émulateur) n'acceptera pas un fichier APK non signé pour l'installation. –

+0

Si vous parlez d'autoriser les applications non-Market, ce paramètre ne s'applique pas lorsque "sideloading" via "adb". –

+0

Non Je fais spécifiquement référence à l'autorisation d'installer une application non signée. – the100rabh

8

Comme mentionné par steelbytes, l'erreur INSTALL_PARSE_FAILED_NO_CERTIFICATES suggère que l'APK n'est pas signé comme vous le pensez.

Exécutez cette commande pour vérifier que le certificat utilisé pour signer l'APK:
jarsigner -verify -verbose -certs abc.apk

Pour chaque entrée dans l'APK, vous devriez voir quelque chose comme ceci:

 
sm 152412 Wed Oct 14 14:16:52 CEST 2009 classes.dex 

     X.509, CN=Meebo, OU=Meebo, O=Meebo, L=Mountain View, ST=California, C=US 
     [certificate is valid from 28/10/08 06:49 to 13/08/82 07:49] 

Dans le cas contraire, si le L'APK n'est pas signé, vous recevrez le message jar is unsigned.

0

Vous pouvez exécuter la commande:

C:\Program Files\Android\android-sdk\platform-tools>adb logcat 

Il vous donnera un plus en détail sur lequel le fichier exact n'est pas signé:

Package has no certificates at entry assets/META-INF/AIR/application.xml; ignoring! 
2

essayer ci-dessous le code il a travaillé pour moi.

Below line run when your jdk version is 6 for singing the apk 

H:\Keytool>"C:\Program Files\Java\jdk1.6.0_09\bin\jarsigner.exe" -verbose -keystore donate.keystore "H:\Keytool\yourapkName.apk.apk" donate.keystore 

Below line run when your jdk version is 7 for singing the apk 

H:\Keytool>"C:\Program Files\Java\jdk1.7.0_21\bin\jarsigner.exe" -verbose -keyst 
ore denote.keyStore "H:\Keytool\yourapkName.apk" denote.keyStore -digestalg SHA1 -sigalg MD5withRSA 
+0

"-digestalg SHA1 -sigalg MD5withRSA" résolu pour moi – FooBarTheLittle

Questions connexes