2014-09-24 53 views
0

我創建了一個叫做對myApp與CLI一科爾多瓦的應用程序,然後馬上跑了這一點:如果keytool命令成功,我們是否也需要執行jarsigner?

keytool -genkey -v -keystore myApp.keystore -alias myApp -keyalg RSA -keysize 2048 -validity 10000 

我把密鑰庫和APK文件放在同一文件夾中。當我試圖用的jarsigner簽名:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myApp.keystore myApp.apk myApp 

...我得到的輸出:

jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size (expected 814 but got 818 bytes) 

當我這樣做:

jarsigner -verify -verbose -certs myApp.apk 

...的輸出結束了:

jar verified. 

這意味着apk有alrea dy已簽署。在此過程中,將創建「2,048位RSA密鑰對和自簽名證書(SHA1withRSA),有效期爲10,000天」。 這是否意味着現在的myApp.apk不需要應用單獨的jarsigner流程,並且它已準備好用於Play商店(假設它符合所有Google Play規則)?

我對這個整個過程的jarsigner部分感到困惑,每次使用它時都會碰到一個崩潰的停止。 (通過 「的jarsigner部分」 我的意思是密鑰工具代碼之後實現的jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myApp.keystore myApp.apk對myApp

我的開發環境:

  • Mac OS X 10.9.5在最新的Mac Mini上
  • Cordova CLI 3.6.3(cordova,not phonegap)
  • 不適用於PG Build;沒有使用Jquery或其他JS或CSS包
  • 我沒有使用Eclipse;我故意學習如何在沒有它的情況下構建簽名的apk。

問題源於3.6.3版本中存在一個錯誤,因爲該版本代碼尚未完整記錄和實施。提交了關於Jira的錯誤報告。

回答

1

我假設你正在關注這些instructions。在構建你的apk時,你是否編譯過release mode,這樣它就會生成一個未簽名的apk?看到你無法使用jarsigner簽名,但確認它已經簽名,我覺得這個問題可能在於你的apk。

+0

然後我看到了問題。我使用'cordova build android'而不是'cordova build android --release'來構建apk,然後將腳本應用到錯誤的文件中。正確的文件是HelloCordova-release-unsigned.apk。一旦我使用了這些步驟,jarsigner就成功了。 – Steve 2014-09-26 18:34:33

+0

如果我可能會問後續問題,我將如何簽署一個v2應用程序,我將使用v1鍵?在這種情況下,劇本會有什麼不同? – Steve 2014-09-26 18:35:27

相關問題