用命令行發布android程序


在開發android程序的過程中,我們使用ant debugant installd這兩個命令就夠了,不涉及到APK的簽名。

但是在正式發布我們的Android程序時,需要對APK簽名。ant release生成一個release版程序。

ant release在package這一步會生成一個未簽名的apk:xxx-release-unsigned.apk。然后試圖用ant.properties里面給出的keystore文件對這個apk簽名,生成xxx-release.apk。如果ant.properties沒有給出keystore,不會生成簽名的apk。這時你運行ant installr就會失敗,因為ant找不到xxx-release.apk

解決方法有兩種:(1)在ant.properties文件中設置key.store和key.alias,然后重新運行ant releaseant installr命令。(2)自己用命令對xxx-release-unsigned.apk簽名和zipalign,生成xxx-release.apk,然后再運行ant installr

不管用哪種方法,我們都要先准備好keystore文件。JDK提供了keytool程序,可以生成key.store文件。

keytool.exe -genkey -alias jollywing.android.keystore -keyalg RSA -validity 36500 -keystore android.keystore
  • -genkey 表示要進行的動作是生成keystore.
  • -alias 是這個keystore的別名。
  • -keyalg 表示生成密鑰對的算法。
  • -validity 表示有效期,這里36500接近100年。
  • -keystore 指定最終生成的keystore文件名。

運行命令,會提示輸入密鑰庫口令。這個口令在給apk簽名時還會問到。
然后會詢問一些信息,你的姓名、你的組織、你所在的地區等。
最后還會詢問key.alias的密鑰口令,直接回車,表示使用和密鑰庫相同的口令。

命令運行成功,還會得到一個警告信息:

JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore android.keystore -destkeystore android.keystore -deststoretype pkcs12" 遷移到行業標准格式 PKCS12。

我們可以運行警告信息中的命令,把密鑰庫轉換成標准格式。這一步可選。

然后我們可以簽名了。兩種方式,一種是用ant release命令簽名,另一種是手動簽名。

如果用ant release命令簽名,我們把android.keystore放在工程根目錄下,即和build.xml和ant.properties相同的目錄。然后編輯ant.properties,增加以下內容。

key.store=android.keystore
key.alias=jollywing.android.keystore
key.store.password=<剛才設置的密鑰庫口令>
key.alias.password=<剛才設置的密鑰庫別名口令>

如果android.keysotre沒放在工程根目錄下,最好使用絕對路徑指明keystore文件放在哪里。

然后ant releaseant installr就OK了。

最后再講一下自己用命令對xxx-release-unsigned.apk進行簽名。

使用jdk中的jarsigner命令(apk就是一個jar包文件)。

jarsigner -keystore <keystore文件的路徑> <xxx-release-unsigned.apk的路徑> 密鑰庫別名

命令運行后,xxx-release-unsigned.apk就是已經簽名的了。

zipalign -v 4 <xxx-release-unsigned.apk的路徑> <要生成的xxx-release.apk的路徑>

zipalign命令放在android sdk的build-tools目錄下。

好了,一個可以發布的apk新鮮出爐了,adb install <xxx-release.apk的路徑>試試看吧。如果xxx-release.apk放在工程的bin目錄下,也可以直接運行ant installr

2017-11-25 周六


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM