前置條件:
環境搭建,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)