linux系统Jenkins编译安卓项目笔记
==============================================
一、环境安装 =
==============================================
-----------------------------------------------------------------------
(1)gradle安装
-----------------------------------------------------------------------
下载地址:https://services.gradle.org/distributions/
示例:
wget --no-check-certificate https://services.gradle.org/distributions/gradle-6.5-all.zip
unzip -qo gradle-6.5-all.zip -d /opt/
-----------------------------------------------------------------------
(2)安装11的jdk(根据自己的版本下载)
-----------------------------------------------------------------------
最新版本地址:https://corretto.aws/downloads
11版本下载地址:https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html
wget --no-check-certificate https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.tar.gz
tar xzvf amazon-corretto-11-x64-linux-jdk.tar.gz -C /opt/
mv /opt/amazon-corretto-11.0.25.9.1-linux-x64/ /opt/amazon-corretto-11.0.25.9.1
-----------------------------------------------------------------------
(3) 安装sdk
-----------------------------------------------------------------------
下载地址:
wget --no-check-certificate https://googledownloads.cn/android/repository/commandlinetools-linux-11076708_latest.zip
unzip -qo commandlinetools-linux-11076708_latest.zip -d /opt/android/sdk/cmdline-tools/
cd /opt/android/sdk/cmdline-tools/
#查看目前commandline-tools版本,并修改文件夹名称,我们使用12.0
CMDLINE_TOOLS_VERSION=$(cat cmdline-tools/source.properties | grep 'Pkg.Revision' | cut -d"=" -f2)
mv cmdline-tools $CMDLINE_TOOLS_VERSION
#设置java环境变量,12.0的sdkmanager需要17版本以上,否则会报错
export JAVA_HOME=/opt/jdk-21.0.2/
cd /opt/android/sdk/cmdline-tools/12.0/bin/
./sdkmanager --list
./sdkmanager "platform-tools" "platforms;android-28"
#假如非root用户运行jenkins给sdk文件夹进行授权
chown -R jenkins.jenkins /opt/android/sdk/
至此,环境安装完成,下面开始jenkins打包配置。
=============================================
二、jenkins编译打包 =
=============================================
-----------------------------------------------------------------------
(1)添加全局的jdk和Gradle:用于编译代码使用
-----------------------------------------------------------------------
系统管理
——全局工具配置
——JDK安装
——新增JDK
别名“jdk-amazon-11.0.25”,
自动安装取消勾选,
JAVA_HOME:"/opt/amazon-corretto-11.0.25.9.1/",
——Gradle安装
——新增Gradle
name:gradle-6.5
自动安装取消勾选,
GRADLE_HOME:/opt/gradle-6.5
保存;
-----------------------------------------------------------------------
(2)添加git用户凭据:用于拉取代码使用;
-----------------------------------------------------------------------
系统管理
——凭据管理
——System
——全局凭据
——Add Credentials
类型“Username with pasword”,
范围“全局”,
用户名:“git用户名”,
密码:“git密码”,
ID“唯一标识,如git_用户名”,
保存;
-----------------------------------------------------------------------
(3)新建任务:
-----------------------------------------------------------------------
构建一个自由风格的软件项目,
如果想根据已经存在的人物创建,在复制输入框中输入jenkins项目名称,
确定;
-----------------------------------------------------------------------
(4)勾选丢弃旧的构建:
-----------------------------------------------------------------------
保持构建天数30,
保持构建最大个数50
-----------------------------------------------------------------------
(5)参数化构建过程:
-----------------------------------------------------------------------
添加参数Tag,
——选择“Git参数”,
名称“Tag”,
参数类型“标签”,
默认值“release_2.0.0”;
——添加参数Branch,
选择“Git参数”,
名称“Branch”,
参数类型“分支”,
默认值“master”;
(需安装git插件)
-----------------------------------------------------------------------
(6)JDK版本选择
-----------------------------------------------------------------------
选择第一步配置的JDK别名
-----------------------------------------------------------------------
(7)代码配置:
-----------------------------------------------------------------------
源码管理
——Git
——Respository URLs输入git地址,
——Credentials选择第(2)步骤创建的用户
-----------------------------------------------------------------------
(8)勾选Delete workspace before build starts:
-----------------------------------------------------------------------
编译前删除工作目录,防止存在缓存之类数据导致编译出错问题(需安装Workspace Cleanup插件)
-----------------------------------------------------------------------
(9)勾选Color ANSI Console Output: 用于echo内容显示样式使用(需安装AnciColor插件)
-----------------------------------------------------------------------
-----------------------------------------------------------------------
(10)增加构建步骤:
-----------------------------------------------------------------------
——执行Shell: 判断Tag不能为空,删除缓存目录,输出java版本、sdk目录及gradle版本
#!/bin/bash if [ -z "$Tag" ]; then echo "Tag is can not empty." exit 1 fi rm -rf .gradle rm -rf app/build rm app/release/output-metadata.json chmod +x ./gradlew echo "JAVA_HOME is $JAVA_HOME" echo "ANDROID_HOME is $ANDROID_HOME" /opt/gradle-6.5/bin/gradle -version
——Invoke Gradle script:
——Invoke Grale: 使用gradle编译打包
——GradleVersion:选择上面添加的全局gradle别名“gradle-6.5”
——Use Gradle Wrapper:使用gradlew编译打包,会自动下载gradle-6.5,与上面Invoke Grale二选一
——勾选Make gradlew executable
——Wrapper location:默认为根目录,如果不在需填写所在目录
——Tasks:需要执行的命令任务列表,根据需要填写,以下为编译Release版本
clean
assembleRelease
-----------------------------------------------------------------------
(11)增加构建后的步骤:
-----------------------------------------------------------------------
增加构建后的操作步骤
——归档成品
——用于存档的文件:填写编译完成后apk的位置,如app/build/outputs/app/release/*.apk
-----------------------------------------------------------------------
(12)构建完成后查看apk的签名信息
-----------------------------------------------------------------------
cd jdk目录/bin/
#############################
#查看apk的签名信息 #
###########################
./keytool -printcert -jarfile apk文件
#############################
#查看授权文件的签名信息: #
###########################
./keytool -v -list -keystore 授权文件
示例:
./keytool -v -list -keystore 授权文件所在目录/xuean-rk.jks
-----------------------------------------------------------------------
(13)以上示例build.gradle写的有签名信息直接可直接进行签名,假如未配置,可参考以下操作,未经实践。
-----------------------------------------------------------------------
1)安装插件Android Signing Plugin
2)转换签名文件为p12
#############################
#将jks签名文件转换为PKCS12格式#
##########################
cd jdk目录/bin/
./keytool -importkeystore -srckeystore android_mxdream_key.key -srcstoretype JKS -deststoretype PKCS12 -destkeystore android_mxdream_key.p12
keytool证书转换可参考https://www.cnblogs.com/lsgxeva/p/11540706.html
3)添加签名文件鉴权信息:
系统管理
——凭据管理
——System
——全局凭据
——Add Credentials
类型“Certificate”,
范围“全局”,
证书:“Upload PKCS#12 certificate and key”,
选择文件:“上传上面第2步骤的签名文件”,
密码:“签名文件设置的密码”,
ID:“唯一标识”用于第4步骤选择使用
保存;
4)项目配置时构建步骤中Invoke Gradle Script前需新增步骤:
“Sign Android APKs”
——Key Store:选择上面第3⃣️步骤配置的凭据ID,
——Key Alias:别名,
——APKs to Sign:需要签名的APK位置,如app/build/app/release/*.apk
——Archive Sign APKs:归档签名后的APK,在点击项目时会显示最后一次编译的APK