Android项目jenkins自动化打包
1. jenkins安装步骤
-
下载jenkins安装包: https://jenkins.io/zh/download/
-
卸载openjdk, 如果云服务有openjdk, 需要卸载: https://www.cnblogs.com/yyjf/p/10287301.html
-
开放端口, 云服务器的安全组配置端口
8899
(随便选择), 如果服务器安装了宝塔, 还需要开通宝塔的对应端口; -
安装java环境, 需要安装java JDK8的版本, 如果版本太高可能编译不了, 我的版本
jdk-8u241-linux-x64.tar.gz
; -
安装jenkins, 安装完成后配置端口 8899: http://www.pianshen.com/article/8973100008
-
jenkins配置java路径, 路径后面要带java执行程序(…/bin/java): https://www.cnblogs.com/liqing1009/p/6824974.html
-
启动jenkins, 启动成功后, 浏览器访问路径为
http://${ip}:8899
; -
安装插件, 最好是离线安装, 国内云服务器可能需三小时以上, 实在不想离线, 建议晚上睡前安装;
-
设置jenkins账号; 自己记住
-
linux安装android sdk. 有时候编译不通过就是因为版本不一致, 需要更新sdk: https://www.jianshu.com/p/90f39c0437d7
-
给jenkins配置java, android sdk, git的路径
-
linux安装gradle: https://www.cnblogs.com/barrywxx/p/7778363.html
-
jenkins配置gradle路径
-
上传所需插件(可选):
- AndResGuard: https://www.jianshu.com/p/bd8d31c472b0
- modify_weixin_packagename.jar(自动化更改微信回调包名路径, 后面提供源码),
- app_name_modify.jar(自动化更改app名称, 后面提供源码),
- 360加固linux版本: https://jiagu.360.cn/#/global/download
- 美团walle打包cli版本的jar包
2. jenkins中android项目的配置
1. 参数化构建
添加参数: app名称app_name
, 包名application_id
, 版本号app_version_code
, 版本名称app_version_name
, 360加固账号jiagu360_account
(账号密码使用空格分开), git分支git_branch
, 操作文件夹my_result
;
2. 源代码管理
进入源码管理
, 选中 git
, 填写自己的仓库github或者码云地址, 指定分支: */${git_branch}
;
3. 编译前配置
选择增加构建步骤->执行shell
, 配置如下:
cd ${WORKSPACE}
#创建my_result操作文件夹
if [ ! -d "${WORKSPACE}/${my_result}" ];then
mkdir ${WORKSPACE}/${my_result}
else
echo "文件夹已经存在"
fi
#创建版本对应的文件夹
if [ ! -d "${WORKSPACE}/${my_result}/${app_version_name}" ];then
mkdir ${WORKSPACE}/${my_result}/${app_version_name}
else
echo "文件夹已经存在"
fi
#删除以前打包的apk
if [ ! -f "${WORKSPACE}/${my_result}/${app_version_name}/${app_version_name%}.apk" ];then
echo "文件不存在"
else
rm -d ${WORKSPACE}/${my_result}/${app_version_name}/${app_version_name%}.apk
fi
#进入java执行文件夹
cd /usr/local/java/jdk1.8.0_241/bin/
#修改微信回调的包名,不需要可不执行,jar包可以随意放。
#java -jar /home/bobo/modify_weixin_packagename.jar "${WORKSPACE}" "${application_id}"
#修改app的应用名称
java -jar /home/bobo/app_name_modify.jar "${WORKSPACE}" "${app_name}"
4. Gradle配置
进入Invoke Gradle script->Invoke Gradle
, 配置Gradle版本:
5. 编译过程配置
选择增加构建步骤->执行shell
, 配置如下:
#默认编译打完包之后apk的路径
releasePath="${WORKSPACE}/app/build/outputs/apk/release/app-release.apk"
#app的证书路径
jksPath="${WORKSPACE}/app/myapp.jks"
#360加固linux版本的jar包路径
jiaguPath="/home/bobo/jiagu/jiagu.jar"
#登录360加固
java -jar ${jiaguPath} -login ${jiagu360_account}
#给360导入证书
java -jar ${jiaguPath} -importsign ${jksPath} "mykeywords" "myalias" "mykeywords"
#用360加固,加固后路径为${WORKSPACE}/${my_result}/${app_version_name}
java -jar ${jiaguPath} -jiagu ${releasePath} "${WORKSPACE}/${my_result}/${app_version_name}" -autosign -automulpkg
#进入此版本文件夹
cd ${WORKSPACE}/${my_result}/${app_version_name}
#理论上这个文件夹里面只有一个加固后的?.apk,命名?.apk为:版本名称.apk
mv *.apk "${app_version_name}.apk"
#复制apk到你需要的地方
cp -f "${app_version_name}.apk" "/home/bobo/apk/${app_version_name}.apk"
#todo 后面可以继续执行你想执行的shell脚本...
3. android项目的配置
- 在gradle.properties中配置参数, 注意:参数键key需要和jenkins中配置的一样。
#禁止jenkins构建使用缓存
org.gradle.parallel=true
#包名
application_id=com.test.demo
#版本名和版本号
app_version_name=1.1.0
app_version_code=110
#自动化打包后数据输出路径
my_result=my_result
- app项目中的build.gradle配置
android {
defaultConfig {
applicationId project.application_id
versionCode Integer.parseInt(app_version_code)
versionName project.app_version_name
- vivo手机测试安装时需要这个配置
android.injected.testOnly=false