关于安卓自动化打包docker+jenkins实现
背景
安卓开发过程中,尤其是提测后,会有一个发包的流程。这个流程简单来说,一般都是开发打包,然后发群里,测试再下载,发送到分发平台,然后把分发平台的应用主页发出来,最后群里面的人去下载。这样整套下来,过于复杂,完全是浪费了一大部分的开发力,所以便有了此文。
环境
win11
linux64服务器
docker
实现过程
本问不再讲解docker如何安装,只在docker基础上进行讲解,如需了解docker的安装教程,请自行百度。
(1)安装jenkins
这里有一个要点,因为是客户端的自动化打包,也不想和其他端混淆在一起,所以建议是在docker安装一个新的jenkins,从而独立出来。
博主使用的jenkins版本,是jenkins--2.492.3,这个版本默认支持jdk11,比较符合当前开发的项目要求,其他版本,可在jenkins官网查询得到。
用于国内对docker进行了限制,所以这里直接docker pull是不行的,因为docker默认源是外部的,解决方法如下:docker -load实现,或者是换一个镜像源下载。博主这里使用的是换一个镜像源,具体指令如下:
docker pull docker.m.daocloud.io/jenkins/jenkins:2.462.3-lts-jdk11
然后创建对应的目录,再进行映射,示例指令如下:
docker run -d -p 8153:8080 -p 8154:50000 -v xxxxx:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -u 0 --name android_jenkins docker.m.daocloud.io/jenkins/jenkins:2.462.3-lts-jdk11
上述指令中,xxxxx是代表服务器中,正常的目录。这个目录把/var/jenkins_home挂载出来外部的,便于后续文件的处理,获取。
android_jenkins就是代表这个容器的别名,后续这个名字可以用作指令中的某些标识。
完成上述步骤以后,jenkins就已经再docker里面跑起来了。输入
服务器地址:8153
即可访问jenkins。
(2)下载安卓编译相关文件:
重点
下载之前,要有一个概念,就是把文件放到对应的容易根目录下,方便后续进行配置
相关指令有:
//进入容器
docker exec -it <容器id> /bin/bash
//复制文件到容器
cp <源文件> <目标路径>
docker cp xxx.jar android_jenkins:/xxx
//打开容器bash
docker exec -it <容器id> /bin/bash
下面就是开始下载文件了
jdk8,jdk11,gradlexxx,安卓sdk
首先,jdk很容易下载的,选中Linux版本下载即可。
gradle也是,这里从这个链接下载: 链接
android sdk安装-------------------------------------------------------------------------
先从官网,下载一个命令行工具
https://developer.android.com/studio?hl=zh-cn#command-tools
再下载
wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
解压
tar zxvf android-sdk_r24.4.1-linux.tgz
然后把第一个command-tools移动到sdk的目录下,在去找到command-tools的bin,sdkManager,记住路径,方便后续进行指令操作
完成上述步骤后,把文件统统复制到容器里面,当然,你也可以放在外面的映射目录
然后对sdkmanager执行如下操作:
./sdkmanager --licenses
./sdkmanager "platforms;android-31"
./sdkmanager "build-tools;31.0.0"
同时,再jenkins的全局配置中,配置好gradle的路径,jdk的路径。
注意:jdk的路径,配置后,若想再构建单个项目中指定,需要下载
JDK Parameter Plugin这个插件。
上述就是所有文件复制的流程,完成后,安卓打包的所需文件,环境,都已经完成,下面就是配置单独项目进行打包了。
(3)打包配置
(3-1)新建一个项目
然后进入项目的配置页:
这里就不一一截图了,核心要点如下:
配置参数化构建的参数
例如dev,Debug这种,结合起来,因为最后项目都是执行gradle的,而gradle指令,无非就是assembleDebDebug之类的,所以这写参数,需要交由构建者选择。
选择合适的jdk版本
上文说到,JDK Parameter Plugin这个插件可以作为构建参数的选项,所以这里可以针对单个项目,进行指定jdk构建
配置合适的git源
这里涉及到的就是git配置,会有一些什么证书问题之类的,可以自行百度。若你的源码地址只要求账号密码,那就最简单不过了,否则需要生成证书后,在源码侧配置完成,才能进行git指令的操作
配置合适的gradle
由于项目的不一致,所以gradle也是不一致的,这里需要在全局配置好gradle所有版本,然后再单独进入某个项目中选择即可,建议也是本地配置,因为下载网址速度很慢。
后续就是发包,发送到企业微信等操作了
对于蒲公英发包,官方已经有很成熟的sh之类的脚本,请自行下载后修改。
对于发送到企微,新建机器人,添加webhock即可,这里百度也一大堆,不一一叙述。
总结
整个配置过程,就是一个接纳新事物的过程,遇到问题,网上都有解决方式,由于其他原因,这里不能放出所有脚本和指令,不过这些都是很简单的,所以请自行百度即可。