我創建了一個叫做對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的錯誤報告。
然後我看到了問題。我使用'cordova build android'而不是'cordova build android --release'來構建apk,然後將腳本應用到錯誤的文件中。正確的文件是HelloCordova-release-unsigned.apk。一旦我使用了這些步驟,jarsigner就成功了。 – Steve 2014-09-26 18:34:33
如果我可能會問後續問題,我將如何簽署一個v2應用程序,我將使用v1鍵?在這種情況下,劇本會有什麼不同? – Steve 2014-09-26 18:35:27