一直觉得打包,UI 自动化 写出来技术含量不高,没啥创新,都没有动力写下去了。但是承诺了将这一系列写完,我还是会坚持的。也许是我浅尝辄止,权且当在这里抛砖引玉吧。
在一般的 Android 开发中,我们通常使用 Eclipse 自带的导出工具来进行 App 的签名和发布,Android 自动化打包,就是利用脚本将这样一个手动操作的过程转化为一个命令搞定。
在工具选择上,我尝试过 Maven, gradle,都遇到过很多坑。最终选择了最简单,最原始的工具 Ant。这也符合我一惯 “简单至上” 的原则。
Ant 打包主要是 3 条命令。
android update project -p . -t android-19
ant clean
然后 ant debug
是不是很简单?
准备
需要配置好 JDK、Android SDK 和 Ant 的环境
步骤
#包名
application.package=com.nomouse
#项目名,缺省时源码文件名
ant.project.name=
#编码方式
java.encoding=utf-8
#编译输出绝对路径
out.absolute.dir=d:/out
#生成文件绝对路径
gos.path=d:/out
#签名key文件绝对路径
key.store=D:/adt-bundle/Nomouse
#签名文件密码
key.store.password=password
#签名别称,中文的话需要转成utf-8编码,可以使用JDK自带的native2ascii工具
key.alias=\u4f01\u4e1a
#签名别称密码
key.alias.password=password
6.打开 CMD 命令行,进入到源码根目录,执行 ant release,成功的话可以在 d:/out 目录下看到输出的 App 签名文件。
这个的过程主要是还要打依赖的包。如果你不清楚,可以找开发问问。
这是我最开始用 BAT 写的:
@echo on
set logdir=%~dp0
set buildpath=%logdir%library
set trunkpath=%logdir%trunk/Circle
if exist 1.txt (
del /q /s 1.txt
)
if exist 2.txt (
del /q /s 2.txt
)
cd %buildpath%
dir *.* /a /b > %logdir%/1.txt
@for /f "tokens=1,2 delims=-" %%a in (%logdir%/1.txt) do echo %%a >> %logdir%/2.txt
cd %logdir%
@for /f "tokens=1,2 delims= " %%a in (%logdir%/2.txt) do (
cd %buildpath%\%%a-library
android update project -n %%a -p . -t android-19
ant clean
ant debug
cd %buildpath%
)
后面为了通用性和跨平台,改成 python 的了,而且让他发送到远程路径中去。
结果是这样子的。
持续集成也很简单,这里只对邮件格式一个展示。(这里用的是 SVN,用 git 的可以相应修改,自己也可以修改邮件内容)
$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
Check console output at $BUILD_URL to view the results.
<hr/>
(本邮件是程序自动下发的,请勿回复!)<br/><hr/>
项目名称:$PROJECT_NAME<br/><hr/>
构建编号:$BUILD_NUMBER<br/><hr/>
svn版本号:${SVN_REVISION}<br/><hr/>
构建状态:$BUILD_STATUS<br/><hr/>
触发原因:${CAUSE}<br/><hr/>
构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/>
构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/>
变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>
(APK地址:\\10.21.101.100\build\android)<br/><hr/>
如有问题,请联系 糖果<br/><hr/>
设置一个触发条件,就完成了 Daily Build.
So easy!
这个只是初步完成了一个打包过程。
远期打算加入自动安装功能(可以设置安装与不安装,毕竟有时候要安装测试)
引入单元测试。
我用最简单的方法完成了 Anddroid Daily Buid,你们是如何做的呢?