Android-Jenkins+Gradle+Git自动化打包最佳实践

JenkinsSample

Jekins+Gradle最佳实践

Jenkins是一款开源的持续集成工具,可用于工程自动化测试和打包。支持Web,iOS,Android,Monkey测试等。

Jenkins官网

本文是Jenkins+Gradle打包apk的最佳示例,鉴于网上的各种教程存在的问题和坑,所以记录一下搭建过程和使用时候存在的坑。

由于gradle的相关配置比较复杂,可定制的内容也比较多,需要有一定经验的构建.

文中用到的gradle相关配置示例
gradle配置

效果图

1.到官网下载Jenkins

点击跳转下载地址

Android-Jenkins+Gradle+Git自动化打包最佳实践
Jenkins下载列表

Note:下载列表的最后一个是war包,可以直接部署到tomcat无需安装

本文基于Windows,Jenkins为安装版

2.下载安装后可以在浏览器打开:http://localhost:8080/jenkins

如果在服务器环境下8080端口很可能是被web项目占用,可以通过修改Jenkins安装目录下的jenkins.xml文件,修改httpPort后的端口号

Android-Jenkins+Gradle+Git自动化打包最佳实践

如果使用的是war包部署,端口号就和tomcat一样了

3.打开jenkins后的第一个页面,根据提示到安装目录找到第一次登录的秘钥

Android-Jenkins+Gradle+Git自动化打包最佳实践

4.安装默认插件

Android-Jenkins+Gradle+Git自动化打包最佳实践

5.等待安装结束后进入主界面,配置全局变量,Android SDK的目录

Android-Jenkins+Gradle+Git自动化打包最佳实践

6.配置相关工具目录,如果没有可以选择自动下载,其中gradle版本建议和平时开发环境的版本一致,否则可能会导致编译失败

Android-Jenkins+Gradle+Git自动化打包最佳实践

7.安装必备插件

需要安装的列表(注意搜索的时候大小写和空格):

  • Date Parameter Plugin
  • build-name-setter
  • description setter plugin
  • Environment Injector Plugin

Android-Jenkins+Gradle+Git自动化打包最佳实践

8.新建一个构建项目,选择*风格的项目

Android-Jenkins+Gradle+Git自动化打包最佳实践

9.填写构建参数,这一步非常重要,编写的内容要配合Gradle
填写构建参数,这一步非常重要,编写的内容要配合Gradle
填写构建参数 ,这一步非常重要,编写的内容要配合Gradle

先看一下gradle的输出apk脚本,主要内容就是判断是否由Jenkins构建,如果是那就根据对应参数生成apk到对应目录,否则正常输出到本地apk目录

Android-Jenkins+Gradle+Git自动化打包最佳实践

填写构建参数,注意Choice Parameter,String Parameter,Date Parameter ,如果发现没有Date Parameter请回到第七步安装好插件

9-1配置输出apk的渠道

Android-Jenkins+Gradle+Git自动化打包最佳实践

这里的choices是根据gradle的productFlavors而定,请注意第一个字母要大写,具体请参考示例gradle 示例gradle点击跳转

9-2,配置apk输出名字

Android-Jenkins+Gradle+Git自动化打包最佳实践

这个参数是输出后的apk文件名组成,建议和构建平台一致,注意字母大小写

9-3配置apk的环境,是debug还是release

Android-Jenkins+Gradle+Git自动化打包最佳实践

其中空格是为了需要输出所有渠道apk时候需要的

9-4.配置是否由Jenkins构建,是和否的apk会生成到不同和目录和不同名字,具体配置还是参考示例gradle

Android-Jenkins+Gradle+Git自动化打包最佳实践

9-5.配置App版本号

Android-Jenkins+Gradle+Git自动化打包最佳实践

9-6配置apk输出文件名加上时间

Android-Jenkins+Gradle+Git自动化打包最佳实践

9-7配置构建信息

Android-Jenkins+Gradle+Git自动化打包最佳实践

9-8配置Git信息

Android-Jenkins+Gradle+Git自动化打包最佳实践

9-9配置输出命令

clean assemble'${PRODUCT_FLAVOR_BUILD}''${ENVIRONMENT_TYPE}' 这段动态脚本相当于 clean assembleOfficalRelease

所以应该明白为什么PRODUCT_FLAVOR_BUILD配置的第一个英文要大写了

Android-Jenkins+Gradle+Git自动化打包最佳实践

10.选择好需要构建的参数,选择开始构建,每一次构建都会自动从git拉取最新的代码.第一次构建Jenkins需要下载相应的jar包,耗时会比较久(如果构建失败,请继续阅读接下步骤)

由于由于gradle打包也会引用jdk,所以在打包的时候会消耗比较大的资源,建议将Jenkins配置在服务器,这样在打包的时候就不会影响开发,同时也可以随时随地在其他地方进行打包,不需要依赖发开环境

Android-Jenkins+Gradle+Git自动化打包最佳实践


11.编译成功,根据gradle配置的输出路径找到apk

Android-Jenkins+Gradle+Git自动化打包最佳实践


注意事项:
由于是直接由Gradle进行打包,和AS的generated apk还是有区别的,所以我们还需要进行额外配置才能正常构建,

Android-Jenkins+Gradle+Git自动化打包最佳实践

在windows系统中,由于对文件路径有长度限制,256个字节,如果图片的路径长度超过了这个限制,就会报这个错误

解决办法:在gradle.properties指定cache路径

android.buildCacheDir=缓存路径

示例gradle.properties