宝塔CentOS7.9+Jenkins2.504 打包安卓apk(超长版)

前言

1、一定要安装宝塔吗?非必要,我是因为宝塔文件上传、下载、解压等文件管理比较方便(部署java项目,如jenkins也方便),平常也不维护linux操作命令经常记住几天就给忘记了,宝塔来的省事。

2、jenkins的安装教程很多,我是直接在宝塔配置java项目运行的jenkins.war包。最新的jenkins需要高版本jdk,新版本的宝塔可以直接可视化安装管理jdk版本,运行java项目时指定对应符合要求的jdk版本即可!我这个jenkins安装的有点久了,正常在“项目路径”选择了jenkins.war文件后下面有些配置就会自动带出来!

3、安卓项目打包apk的基础知识还是需要了解下的,可以看下我之前的文章-->【Android Studio安卓项目gradle命令行apk打包(详细)

4、关于教程中的git环境,我是直接虚拟机里面运行的gogs服务,搭建时还处理了个升级glibc的尴尬事情(惨痛教训之CentOS7.9升级到glibc2.34 ),建议试手的话可以自己传国内的gitee等平台,git仓库注意设置私有,本文不会涉及git教程。

5、关于jdk版本,我系统默认的是jdk1.8版本,也已使用宝塔安装了其他高版本的jdk版本。

jekins构建安卓apk实现过程简介

1、Android command-tools命令行工具下载使用(自己选择一个路径做为ANDROID_HOME路径,然后将其下载解压到该路径下)

1.1、使用sdkmanager命令 安装platform-tools平台工具以及适用于API级别的SDK(与安卓项目本身的需要一致)

2、手动安装gradle版本并在jenkins中配置(需要与安卓项目本身要求的gradle版本一致)

3、在jenkins中配置环境变量ANDROID_HOME的路径

4、在jenkins中创建构建流程(顺便添加git账号密码凭证),构建步骤选择Invoke Gradle script

4.1、特殊的sdk路径指定,jenkins构建前修改替换gradle.properties配置文件中org.gradle.java.home指定的jdk路径,避免linux环境与 开发环境jdk路径不一致导致编译失败(如果配置文件没有指定jdk路径,则会直接用所处系统的jdk环境变量JAVA_HOME的路径)

jenkins构建放弃JAVA_HOME环境变量使用,转而是直接在gradle.properties指定jdk路径配合jenkins流程的gradle版本选择,基本可以在Jenkins上构建基于不同jdk版本、不同gradle版本安卓项目的构建。

一、 在jenkins所在服务器安装使用Android command-tools

下载linux版本,下载压缩包后解压到/opt/android_sdk/目录(没有就创建,后面这个目录就是Android SDK HOME目录)下,解压后是cmdline-tools文件夹。

打开cmdline-tools文件夹,创建新文件夹latest后将同目录下的其他文件转移到latest文件夹下面!

切换目录cd /opt/android_sdk/cmdline-tools/latest/bin
因为我没有将cmdline-tools的可执行目录加入环境变量所以sdkmanager命令需要指定路径或切换目录后再执行!
查看已安装信息./sdkmanager --list
出现错误提示This tool requires JDK 17 or later. Your version was detected as 1.8.0_412.
To override this check, set SKIP_JDK_VERSION_CHECK.

需要安装高版本java,提示不能低于JDK17,我宝塔上装了21就直接用了,如下添加环境变量(如果要让这个设置永久生效,也可以将下面命令添加到 ~/.bashrc 或 ~/.bash_profile 文件中)

export JAVA_HOME=/www/server/java/jdk-21.0.2/
export PATH=$JAVA_HOME/bin:$PATH

【查看安卓项目build.gradle的compileSdkVersion 如果是28,就安装android-28】
sdkmanager "platform-tools" "platforms;android-28"

安装成功后文件路径结构如下图:

二、在jenkins服务器上安装Gradle

在安卓项目的gradle-wrapper.properties文件中查看使用的版本,我这里是5.1.1
因为项目可能用了不同的gradle版本,就直接在jenkins里面选自动安装了(事实证明国内网络环境大概率会下载失败,建议还是直接手动安装gradle)

1、在jenkins上管理gradle版本(在线自动安装,配置完不会立即安装,在后面jenkins构建流程中如果首次用到了才会下载安装):

2、手动安装Gradle版本(推荐)

手动安装gradle版本,因为网络原因让jenkins自动安装gradle大概率是会失败的,需要手动安装:
创建文件夹路径/opt/gradle/,然后下载https://downloads.gradle.org/distributions/gradle-5.1.1-bin.zip并解压(我这里是5.1.1版本),也可以去腾讯的加速站点下载指定版本https://mirrors.cloud.tencent.com/gradle/

解压完毕后,直接在jenkins中进行配置,设置别名的name 自己能看懂区分就行:

三、配置jenkins中的ANDROID_HOME环境变量

这里的ANDROID_HOME就是前面下载命令行工具创建的路径!

四、创建jenkins构建流程

1、新建一个自由风格的构建项目

2、源码管理选择 git,选择安卓项目git仓库地址:

首次使用仓库可能要添加访问凭证,添加后就可以在Credentials访问凭证里面选择刚才的凭证。

3、触发器和环境配置可以保持默认

4、配置构建步骤 选择 Invoke Gradle script

在Tasks里面输入构建命令
app:clean
app:assembleRelease

5、构建后操作,告诉jenkins 从哪个地方获取构造结果

"用于存档的文件",这里可以写通配符路径,比如:app/build/outputs/apk/*/*.apk

五、保存jenkins构建任务 后执行构建(解决了一些问题)

jenkins使用插件可以给不同用户角色分配不同构建任务的仅查看或执行权限,有需要的可移步查看-->【jenkins2.504用户权限,不同角色操作不同job

1、第一次构建在线版本下载失败,修改流程里面gradle为本地版本就行了,第一次构建耗时非常长43分钟还失败了!

2、出现jdk路径错误提示

Value 'C:Program FilesJavajdk1.8.0_131' given for org.gradle.java.home Gradle property is invalid (Java home supplied is invalid)

这个错误是因为,我的安卓项目在项目gradle.properties文件中手动指定了jdk路径,但是jenkins构建时无法找到!

我这里直接简单粗暴地替换成了jenkins服务器上的jdk路径,这个脚本要放在jenkins构建流程前面(脚本意思就是在gradle.properties查找org.gradle.java.home=开头的所在行,然后直接修改为org.gradle.java.home=/usr/java/jdk1.8.0_121):

sed -i 's|^org.gradle.java.home=.*|org.gradle.java.home=/usr/java/jdk1.8.0_121|' gradle.properties
echo "JDK 路径已更新为 /usr/java/jdk1.8.0_121"

3、遇到的一些其他问题

构建还是不行,然后从开发电脑上把整个对应gradle版本文件夹复制过去替换了(不知道是不是同样的gradle版本从不同地址下载存在区别的问题)结果还是不行!


还是报错AAPT2 aapt2-3.2.1-4818971-linux Daemon #0: Unexpectedly exit.
把jenkins的流程名称改为纯英文还是不行!

继续报错Starting a Gradle Daemon, 4 busy Daemons could not be reused, use --status for details
看起来像是Gradle进程问题,直接重启服务器,居然好了!

期间一度以为是项目代码有问题,在windows开发机上使用gradle命令打包是成功的!最终在一次重启centos服务器后打包正常了!

六、jenkins构建安卓apk成功

1、本文只是实现了整个安卓项目apk构建流程,正式使用还涉及到更灵活的带参数构建、工作区空间清理、后续对接发布apk等流程……

2、增加简单的带参数构建

设置可选参数BUILD_TYPE

上面创建完选择参数后,在下面Gradle构建的Tasks里面使用BUILD_TYPE参数:

保存后,再次构建就会出现选择了:

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/centos7-jenkins-build-android-apk/

赞赏

微信赞赏支付宝赞赏

发表评论