谷歌提供的 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~1Java<jdkdir>
但最好的方法是将 JDK 安装到一个没有空格符的目录下。
[3] 由于在 Ant 构建过程中你输入的密码会显示在屏幕上,如果你对此有顾虑,可以选择使用 Jarsigner 工具进行手动签名和优化。
附:
1. Signing Your Applications - 安卓应用签名。