谷歌提供的 Android SDK 支持 Ant 自動構建[1],你可以使用調試和發行兩種模式進行構建,兩種模式不同之處在於調試模式 Ant 會調用內置的調試密鑰,而發行模式調用你提供的私鑰。
首先安裝 Ant,並且將它添加到你的執行路徑 PATH 裡[2]。
調試模式構建
在調試模式下,Ant 會自動使用一個調試密鑰對你的安卓應用進行簽名,並且使用 zipalign 進行優化。
要進行調試模式下的構建,首先在命令行進入安卓項目根目錄,然後使用 Ant 啟動調試模式構建:
$ ant debug
該命令會在項目的 bin/ 目錄下創建一個名為 <your_project_name>-debug.apk 的文件,該 .apk 文件已經使用調試密鑰進行了簽名,並且經過 zipalign 優化。
每次項目中的資源發生變化,你都必須重新運行該命令進行編譯和打包。
發行模式構建
當你准備發行你的安卓應用時,就必須使用發行模式進行構建,使用該模式前,你先得有一個私有密鑰,並且使用該密鑰對發行包進行簽名。
你現在有兩種構建方案,一是構建一個未簽名的發行包然後手動簽名和優化,另一個是使用腳本自動簽名和優化。
構建未簽名發行包
你可以選擇不簽名構建,但隨後你必須要進行手動簽名和優化。
要進行不簽名構建,在命令行進入項目根目錄,使用 Ant 在發行模式下編譯你的項目:
$ ant release
該命令會在項目的 bin/ 目錄下創建一個名為 <your_project_name>-unsigned.apk 的文件。但該文件無法安裝到安卓設備,直到你使用了你的私鑰對其進行簽名後方可。你接下來要做的事情就是對 .apk 文件簽名並使用 zipalign 工具對其優化,更多參見 Signing Your Applications。
構建已簽名和優化包
如果你想的話,你可以配置 Android 構建腳本來自動簽名和優化你的應用包。具體做法是編輯 ant.properties 文件,在其中配置要使用的私鑰 keystore 路徑以及密鑰別名。這樣 Ant 在構建過程中會彈出對話要求輸入密鑰和密鑰別名的密碼,之後你將得到一個可以投放市場的最終發行包[3]。
具體做法為在項目根目錄找到並編輯 ant.properties 文件,如果沒有該文件就創建一個。在該文件添加兩個字段 key.store 和 key.alias。例如:
key.store=path/to/my.keystore
key.alias=mykeystore
保存退出,並運行 Ant 命令開始構建:
$ ant release
中途會要求輸入 keystore 和別名密碼,最終你會在 bin/ 目錄下得到一個名為 <your_project_name>-release.apk 的文件,該文件已經使用 ant.properties 中指定的私鑰簽名,並且經過 zipalign 優化,你可以隨時安裝與發行該文件。你可以將該文件上傳至 web 服務器,然後在安卓設備中使用浏覽器打開下載鏈接來完成自動安裝。
注:
[1] Android SDK 提供的 android 工具能自動生成一個 build.xml 文件,Ant 會使用該文件進行自動構建。Android SDK 中沒有附帶 Ant 工具,你可以從 Apache Ant 主頁下載安裝 Ant。
[2] 在調用 Ant 之前,你還要確保你的 JDK 路徑聲明在了環境變量 JAVA_HOME 中。JDK 在 Windows 的默認安裝路徑為 "Program Files" 文件夾,由於該文件夾中含有空格符,因此會導致 ant 失敗。要修復這個問題,可以將 JAVA_HOME 環境變量設置為如下:
set JAVA_HOME=c:\Progra~1\Java\<jdkdir>
但最好的方法是將 JDK 安裝到一個沒有空格符的目錄下。
[3] 由於在 Ant 構建過程中你輸入的密碼會顯示在屏幕上,如果你對此有顧慮,可以選擇使用 Jarsigner 工具進行手動簽名和優化。