关于安卓自动化打包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即可,这里百度也一大堆,不一一叙述。

总结

整个配置过程,就是一个接纳新事物的过程,遇到问题,网上都有解决方式,由于其他原因,这里不能放出所有脚本和指令,不过这些都是很简单的,所以请自行百度即可。

相关推荐
蝎子莱莱爱打怪9 小时前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
阿巴斯甜16 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker16 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952717 小时前
Andorid Google 登录接入文档
android
黄林晴19 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android