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

总结

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

相关推荐
恋猫de小郭2 小时前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin
aqi002 小时前
FFmpeg开发笔记(七十七)Android的开源音视频剪辑框架RxFFmpeg
android·ffmpeg·音视频·流媒体
小小鱼儿小小林3 小时前
免费一键自动化申请、续期、部署、监控所有 SSL/TLS 证书,ALLinSSL开源免费的 SSL 证书自动化管理平台
开源·自动化·ssl
androidwork4 小时前
深入解析内存抖动:定位与修复实战(Kotlin版)
android·kotlin
梦天20154 小时前
android核心技术摘要
android
从零开始学习人工智能5 小时前
深入解析 OPC UA:工业自动化与物联网的关键技术
运维·物联网·自动化
高山莫衣5 小时前
Docker Desktop导致存储空间不足时的解决方案
docker·容器·eureka
鹏大师运维5 小时前
在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南
linux·运维·docker·容器·麒麟·统信uos·中科方德
lovely_nn5 小时前
docker 介绍
docker·k8s
Ahlson6 小时前
【fnNAS】docker的nginx配置html
nginx·docker·容器·fnnas