Jenkins+Android打包实践

缘由

由于Android项目代码和模块的增加,每次打包需要花费很长的时间,有时候只改了几行代码重新打个包就的等待半个小时,然后啥也干不了,实在是浪费时间,于是决定研究自动化打包,目前Jenkins是使用的比较多的项目构建工具,可以轻松(才怪)实现Android的打包工作。

准备

需要下载Jenkins到你的计算机或者服务器,并且启动服务,这里不重点讲解,可以自行百度。纪录下可能使用到的Jenkins服务命令(windows平台):
- 启动 net start jenkins,这行命令是针对已经配置好了Jenkins服务,并且启动过一次。电脑重启了,需要重新启动服务的情况,注意可能需要管理员权限。

  • 停止 net stop jenkins

  • 重新启动 浏览器输入http://localhost:8080/restart

安装插件

进行Android项目的构建,必须要安装的插件有:Gradle,如果你希望能看到代码编写的问题,还可以安装Android Lint

Android Job

进入Jenkins网站,默认是http://localhost:8080/,点击新建任务,选择 构建一个自由风格的软件项目
在新的页面里面你可以添加一些项目描述,方便识别。

源码管理

源码管理 栏目,具体配置根据你的实际情况选择即可,例如我的代码保存在subversion的,所以选择 subversion
Repository URL 填入你的代码在svn的地址。然后点击右边的小钥匙按钮 Add 添加的你的svn账号

构建

invoke gradle script 选择
invoke gradle script ,在新的面板 Tasks 里面填写clean assembleRelease表示先执行clean任务,然后编译所有的release包。
通常情况下,这样的配置就可以完成一个简单Android项目的编译了,但是!!!,有些项目的根目录下面没有build.gradle,可能在某个子目录下,这就需要配置目录了。我们展开
高级 按钮,在 Root Build script
里面填入主工程的目录,这里填写的是相对路径,例如你的项目在跟目录下的LSX文件夹,那你填入LSX即可。

巨大的坑

这里还有一个 深坑 !在windows系统里面,编译可能会报一个png格式不对的问题,但是这个png文件根本不是你的项目里面的,可能是Android
Support包里面的。这个问题的原因是gradle编译的缓存文件路径名太长了,所以会报这个错误。解决办法是修改缓存地址。这里可以修改主项目目录下面的gradle.properties添加一行代码

android.buildCacheDir = 你希望的缓存地址

但是这种写法不便于本地编码,因为如果你的Jenkins不是安装在自己的电脑上的,就会出现缓存地址不存在的问题。这里可以利用Gradle的一个功能,在命令行传入参数,规则是-PK=V,上面的参数就变成了

-Pandroid.buildCacheDir="你希望的缓存地址"

gradle script 配置
这个问题折腾了我一个下午,没想到就一句话说完了