gitlab+jenkins自动化打包APK

 

前置条件:

环境搭建,jenkins需要的插件看这里:

gitlab+jenkins自动化打包IOS

 

配置思路:

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文件上传到蒲公英,参照

pytho脚本-上传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)

 

 

 

posted @ 2019-07-26 16:57  wangju003  阅读(1660)  评论(0编辑  收藏  举报