我一直試圖使用jarsigner.exe和adb.exe手動簽署一個android包並將其安裝在API V8仿真器上。我創建了一個簡單的HelloAndroid項目,它將使用位於用戶的.android目錄下的debug.keystore生成簽名的HelloAndroid.apk。從Eclipse啓動時,它會在模擬器上構建並安裝apk,而不會出現問題。試圖用jarsigner.exe手動簽署android包並使用adb.exe安裝
我使用android工具將未簽名的應用程序包導出到單獨的目錄。我簽署並zipAligned的包,並使用adb來安裝它,但收到錯誤:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
我用下面的命令來簽署它。
jarsigner -verbose -keystore c:\users\jhwong\.android\debug.keystore
-storepass android -keypass android -digestalg SHA-1 -sigalg SHA1withRSA
-sigfile CERT -signedjar temp\HelloWorld2.apk
temp\HelloWorld.unsigned.apk androiddebugkey
adding: META-INF/MANIFEST.MF
adding: META-INF/CERT.SF
adding: META-INF/CERT.RSA
signing: res/layout/main.xml
signing: AndroidManifest.xml
signing: resources.arsc
signing: res/drawable-hdpi/icon.png
signing: res/drawable-ldpi/icon.png
signing: res/drawable-mdpi/icon.png
signing: classes.dex
這並沒有給我任何錯誤,只是爲了確保我跑:
jarsigner -verify -verbose temp\HelloWorld2.apk
結果表明罐子進行了檢查,每個文件簽署和清單的一部分。
我跑了zipalign -v 4 temp\HelloWorld2.apk temp\HelloWorld3.apk
,沒有發生錯誤。 然後使用adb install -r temp\HelloWorld3.apk
。
我見過幾個相關的線程和文章,提示這些方向,但我很困惑,爲什麼它不能手動使用Eclipse來構建簽名包。我甚至採用了Eclipse構建的軟件包,並且能夠使用adb.exe來安裝它,所以我縮小了它的範圍來簽署軟件包。我已經嘗試了從keytool生成的密鑰庫,但它們並沒有工作,這也是我嘗試debug.keystore的原因。
我會很感激任何意見,如果他們發現我的jarsigner代碼有任何問題。
你救了我的一天!我無法在任何地方找到這些信息! – POMATu 2012-11-14 12:43:27
這爲我節省了一個傷害的世界。 – Tom 2012-11-22 05:56:18
耶!終於找到了這個。非常感謝! – bk138 2013-02-19 19:18:49