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)

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM