Android自動化構建
本文的目的不是介紹如何搭建Jenkins二拐,而是介紹如何在Jenkins中搭建Android自動化構建環(huán)境。
安裝Jenkins Gradle插件
Jenkins原生并不支持Gradle語法,因此需要安裝Gradle插件。
- 下載:Gradle插件
- 上傳并安裝。
創(chuàng)建任務配置
安裝好Gradle插件之后,跟創(chuàng)建常規(guī)任務一樣锌云,新建一個自動化構建任務,需要注意的幾個點:
- 構建工具選擇:Invoke Gradle script吁脱。
- 構建工具配置:
Gradle版本選擇:Gradle Wrapper桑涎,方便版本統(tǒng)一。
Tasks填寫:
clean
assembleRelease
- 用于存檔的APK文件:app/build/outputs/apk/*.apk
- 用于存檔的mapping文件:app/build/outputs/mapping/*/release/mapping.txt
為打包機配置打包環(huán)境
確保SDK具備編譯所需的版本兼贡,才能正確編譯攻冷。
- 下載打包環(huán)境:下載Android Studio(下載無 Android SDK版本),下載SDK Tools
- 安裝環(huán)境:解壓SDK遍希,下載好的SDK Tools僅包含tools文件夾等曼,解壓出來。創(chuàng)建android-sdk-windows文件夾(MAC:android-sdk-mac),將tools放置其中禁谦,盡量將android-sdk-windows置于磁盤根目錄胁黑。配置環(huán)境變量ANDROID_HOME,值為android-sdk-windows文件夾目錄(配置環(huán)境變量需要重啟Jenkins才會有效)州泊。安裝Android Studio并運行丧蘸,其會自行定義到SDK目錄,安裝過程中會下載剩余的必須的SDK遥皂,過程較長力喷。
- 安裝其余的SDK:API(至少包含跟項目targetSdkVersion一致的API,其他視情況而定)演训、Build-Tools(至少包含跟項目buildToolsVersion一致的Build-Tools弟孟,其他視情況而定,文件較小建議全部安裝)样悟、其他extras工具拂募。
Gradle配置
自動化構建用到了兩個Task:clean
與assembleRelease
,其中assembleRelease
為編譯正式版的命令乌奇,clean
則是清理目錄没讲。
根目錄Gradle配置
編輯項目根目錄下的build.gradle文件眯娱,增加clean task:
task clean(type: Delete) {
delete rootProject.buildDir
}
Gradle配置打包簽名
簽名的Gradle配置則在app module下的build.gradle上:
- Gradle配置示例:
signingConfigs {
// keystore properties
Properties keystoreProperties = new Properties()
File keystorePropertiesFile = project.file("../keystore.properties");
// read properties
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(keystorePropertiesFile.newDataInputStream())
}
def storeFileRelease = keystoreProperties.getProperty("storeFile")
def storePasswordRelease = keystoreProperties.getProperty("storePassword")
def keyAliasRelease = keystoreProperties.getProperty("keyAlias")
def keyPasswordRelease = keystoreProperties.getProperty("keyPassword")
release {
storeFile file(storeFileRelease)
storePassword storePasswordRelease
keyAlias keyAliasRelease
keyPassword keyPasswordRelease
}
}
- 簽名文件處理:
將打包用的Keystore放置于項目根目錄礁苗,并創(chuàng)建keystore.properties文件用于配置簽名數(shù)據(jù),文件內容(鍵值對):
storeFile=../filename.keystore
storePassword=storePassword
keyAlias=alias
keyPassword=keyPassword
建議將keystore.properties與keystore文件僅放置于打包機的本地倉庫之中(正式包僅允許打包機打)徙缴,也可將其直接放置Git倉庫里(所有人可以發(fā)布正式包)试伙。
后續(xù)事項
打包失敗時:
- 檢查打包機SDK是否安裝及更新。
- 本地嘗試打包是否存在問題于样。
- 根據(jù)輸出日志查找問題疏叨。