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

 

posted @ 2024-12-18 11:01  雪洁  阅读(10)  评论(0编辑  收藏  举报