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 ,在新的面板 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="你希望的缓存地址"
(
这个问题折腾了我一个下午,没想到就一句话说完了 )