2010-03-31 93 views
2

我已經簽署了一個android項目的apk。每當我的客戶端嘗試在仿真器上運行它時,他都會遇到以下錯誤消息:爲什麼簽署android apk不在模擬器上運行

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] 

什麼是分辨率?

+1

您的應用程序的未簽名版本是否已安裝在模擬器上? – Janusz 2010-03-31 08:01:24

+1

我知道你說它已經簽名,但那個錯誤味精聽起來對我來說不是。 – SteelBytes 2010-03-31 09:52:02

回答

15

對我來說,那是因爲我簽了一個運行JDK 7的機器。降級到JDK 6解決了這個問題。感謝java.lang.SecurityException when install apk的建議!

+7

如果您使用jarsigner爲自己簽名並擁有JDK 7,則可以將選項「-digestalg SHA1 -sigalg MD5withRSA」添加到jarsigner命令中,它將與JDK7一起使用。 – gravitron 2012-02-04 15:12:14

+0

您也可以保留JDK 7並通過升級到Ant 1.8.3或更高版本來修復它.... – 2012-03-08 04:07:07

+0

@GregEnnis。你能詳細說明一下嗎? – AbdulSaleem 2017-08-01 12:17:56

-1

您可以檢查客戶端是否未禁用仿真器中未簽名應用程序的安裝。

+0

所有應用都必須簽名; Android設備(或模擬器)不會接受未簽名的APK進行安裝。 – 2010-04-01 17:39:51

+0

如果您指的是允許非Market應用,則此設置在通過adb進行「sideloading」時不適用。 – 2010-04-01 17:40:22

+0

不,我特別指的是允許未經簽名的應用程序被安裝。 – the100rabh 2010-04-02 05:33:50

8

正如Steelbytes所述,錯誤INSTALL_PARSE_FAILED_NO_CERTIFICATES表明APK沒有像您認爲的那樣被簽名。

運行此命令來驗證該證書被用來簽署APK:
jarsigner -verify -verbose -certs abc.apk

對於在APK每個條目,你應該看到這樣的事情:

 
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] 

否則,如果APK未簽名,您將收到消息jar is unsigned

0

您可以運行命令:

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

它會給你一張精確的文件沒有簽訂了一個細節:

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

試試下面的代碼它爲我工作。

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」爲我解決了它 – FooBarTheLittle 2014-10-30 13:45:36