gitlab+jenkins自动化打包APK
前置条件:
环境搭建,jenkins需要的插件看这里:
配置思路:
step1:
搭建sdk,gradle运行环境,参照:
CentOS7下安装安装android sdk & gradle
step2:
存在1个android项目(可以先自己创建一个helloworld工程,也可以用git clone一个项目至本地)
step3:
确认buildTypes,就是有几个测试环境,这需要和具体的开发沟通好
step4:
测试打包环境可用:
首先cd到项目的app目录下
git克隆项目目录/trunk/5iwork/android/app
使用gradle clean命令清理一下环境
gradle clean
看到Successful的字样就成功了(这里我忘记截图)
step5:
使用gradle assmbleproRelease打包,打包成功,如图所示:
gradle assmbleproRelease
step6:
在app/build/outputs/文件下找到刚才生成的apk文件
运行pwd命令,记录下apk的目录地址(配置shell打包脚本的时候要用):
项目所在目录/trunk/5iwork/android/app/build/outputs/apk/pro/release
step7:
构建打包shell脚本
复制下面的gradle打包脚本,改一改目录地址,用sh build.sh运行,可以生成apk文件进行下1步
step8:
配置jenkins构建apk
注意,如果以前有配置过其它项目打包,这里可以直接复制1个job
修改点:
1.替换git仓库地址
2.shell脚本项目目录地址,换为jenkins项目目录;生成apk的目录
step8:
构建py脚本,用来把apk文件上传到蒲公英,参照
注意要改3个点,如图所示:
做完这些,构建Job,验证配置的结果,如图所示,就well done了
其它:
gradle打包脚本
1 ## !/bin/sh
2 ## 项目名
3 ##使配置文件生效,否则会报gradle:命令找不到
4 source /etc/profile
5
6 TARGET_NAME="AppFrameWork"
7 APKPATH="build/outputs/apk"
8 MODELGRADLEPATH="app"
9 BUILDTYPE=${ENV}
10
11 ##打包版本,开发给测试打包默认是release的
12 APKVERSION="release"
13 ##debug版本下,apk无需混淆,可以多一些打印日志的操作。
14 ##release版本下,文件混淆,隐藏日志打印
15
16 ## 当前目录
17 SORCEPATH=${WORKSPACE}
18
19 ##gradle目录(model级)
20 GRADLEWORKPATH=${SORCEPATH}/${TARGET_NAME}/${MODELGRADLEPATH}
21
22 ## apk文件的存放路径
23 EXPORTPATH=${SORCEPATH}/${TARGET_NAME}/${MODELGRADLEPATH}/${APKPATH}
24
25 ##apk文件的存放路径
26 EXPORTPATHAPK=${EXPORTPATH}/${BUILDTYPE}/${APKVERSION}/${MODELGRADLEPATH}-${BUILDTYPE}-${APKVERSION}.apk
27
28 ## 新的apk名
29 APKNAME="XXXXAPP"
30
31 ## 更名后apk路径
32 EXPORTPATHNEWAPK=${SORCEPATH}/${APKNAME}.apk
33
34 ##切换到gradle工作目录
35 cd ${GRADLEWORKPATH}
36
37 echo -e "============First Build Clean============"
38 ## 清理缓存
39 gradle clean
40
41 echo -e "============Export APK============"
42
43 ## 导出APK包
44 gradle assemble${BUILDTYPE}Release
45
46 echo -e "============Export APK SUCCESS============"
47
48 ## 将APK复制到指定目录
49 cp ${EXPORTPATHAPK} ${EXPORTPATHNEWAPK}
50 echo -e "============APK Name: ${EXPORTPATHAPK}============"
51 echo -e "============APK Enviroment: ${BUILDTYPE}============"
如果想顺利的完成自动化打包(安卓)首先需要:
熟悉Gradle脚本(可以看成是一门独立的语言的),理解Task的概念
参考资料:
Gradle 构建基础
Gradle 入门--只此一篇
Tips:
查看build.gradle中共有多少个task::$ gradle tasks
另外对于构造不同测试环境的apk可以参照:
Gradle之构建变体(BuildVariant)