Android studio 自動化構建打包

關于gradle下Android{}的配置字段說明如下:

defaultConfig{}默認配置胡控,是PriductFlavor類型,它共享給其他ProductFlavor使用

sourceSets{}源文件目錄設置宪郊,是AndroidSourceSet類型

buildtypes{} buildtype類型

sigingConfigs{}簽名配置,signingConfig類型

productFlavors{} 產品風格配置拖陆,ProductFlavor類型

testOptions{} 測試配置 testOptions類型

aaptOptions{}? aapt配置? AaptOptions類型

lintOtions{} lint配置 lintOptons類型

dexOptions{} dex配置弛槐,DexOptions類型

compileOptions{} 編譯配置,CompileOptions類型

packagingOptions{} PackagingOptions類型

jacoco{} jacocoExtension類型 用于設定jacoco版本

splits{} Splits類型

腳本構建工作如下

關于gradle配置編譯APK相關簽名如下依啰;

signingConfigs {

? ? ? ? release {

? ? ? ? ? ? storeFile file('E:\Gsafty\keystoreName.keystore') //絕對路徑

? ? ? ? ? ? storePassword "12345678"

? ? ? ? ? ? keyAlias "alias"

? ? ? ? ? ? keyPassword "12345678"

? ? ? ? }

? ? }

構建類型(開發(fā)過程中會不斷的提交測試debug包到測試人員去測試)

如下代碼僅做參考:

buildTypes {

? ? ? ? release {

? ? ? ? ? ? minifyEnabled false

? ? ? ? ? ? shrinkResources false

? ? ? ? ? ? zipAlignEnabled false

? ? ? ? ? ? proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

? ? ? ? }

? ? ? ? debug {

? ? ? ? ? ? minifyEnabled false

? ? ? ? ? ? shrinkResources false

? ? ? ? ? ? zipAlignEnabled false

? ? ? ? }

? ? ? ? custom {

? ? ? ? ? ? minifyEnabled false

? ? ? ? ? ? shrinkResources false

? ? ? ? ? ? zipAlignEnabled false

? ? ? ? }

? ? ? ? sourceSets {

? ? ? ? ? ? main {

? ? ? ? ? ? ? ? jni.srcDirs = []

? ? ? ? ? ? }

? ? ? ? }

? ? }

多渠道打包構建不同渠道的多爾類型APK

這里不同的渠道會根據構建類型生產對應的apk乎串,其對應關系為渠道種類*構建編譯類型數等于編譯出的APK數。

/*多渠道包*/

? ? productFlavors{

? ? ? ? tencent{

? ? ? ? ? ? applicationId "com.domin.armn"

? ? ? ? ? ? versionCode "1.0"

? ? ? ? ? ? versionName "1.2.0"

? ? ? ? ? ? manifestPlaceholders = [appName: "tencent"]

? ? ? ? }

? ? ? ? baidu{

? ? ? ? ? ? applicationId "com.domin.armn"

? ? ? ? ? ? versionCode "1.0"

? ? ? ? ? ? versionName "1.2.0"

? ? ? ? ? ? manifestPlaceholders = [appName: "baidu"]

? ? ? ? }

? ? }

自定義生產APK包名稱

例如:module——flavor-version-time-buildtye.apk

在app下的build.gradle跟目錄下聲明如下速警。

//獲取當前時間

def getCurrentTime() {

? ? return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))

}

在Android{}目錄下聲明如下:

/*apk重命名*/

? ? android.applicationVariants.all { variant ->

? ? ? ? variant.outputs.each { output ->

? ? ? ? ? ? def outputFile = output.outputFile

? ? ? ? ? ? if (outputFile != null && outputFile.name.endsWith('.apk')) {

? ? ? ? ? ? ? ? def buildType = variant.buildType.name

? ? ? ? ? ? ? ? //這里修改apk文件名,格式為 module_flavor-version-time-buildtype.apk

? ? ? ? ? ? ? ? def fileName = "Gsafety_${variant.productFlavors[0].name}-V${defaultConfig.versionName}-${getCurrentTime()}-${buildType}.apk"

? ? ? ? ? ? ? ? output.outputFile = new File(outputFile.parent, fileName)

? ? ? ? ? ? }

? ? ? ? }

? ? }

進階配置項

以上所有的配置尚且不能夠完全滿足自動化編譯叹誉,乃然需要用戶手動輸入命令去進行編譯APK包,這當然不是我們最想要的結果

gradle執(zhí)行相關命令如下:

注:在使用編譯命令之前請確保gradle已經加入環(huán)境變量闷旧,如果沒加入可以通過./gradlew代替gradle(只能在項目更目錄下使用)

1編譯所有productFlavor及對應所有buildType的apk

$gradle assemble //僅僅執(zhí)行項目打包所必須的任務集

$gradle build? //執(zhí)行項目打包所必須的任務及长豁,以及執(zhí)行自動化測試,所以會較慢

如果缺失某參數忙灼,則會把該參數的所有配置都進行編譯蕉斜,即如果運行gradle assembleFlavor,則會編譯出flavor所有buildType的apk

? ? ? ? 例如:

$gradle assemble

$gradle assembleflavorRelease

$gradle assembleflavorDebug

注:gradle支持命令縮寫缀棍,上面兩個命令也可以寫成如下格式

$gradle a

$gradle ass

$gradle aR

$gradle assflavorR

$gradle aD

$gradle assflavorD

在項目跟目錄下創(chuàng)建一個指定的文件夾(用于編譯跑腳本用),例如.config,然后在該目錄下分別創(chuàng)建.bat文件(win7上批處理后綴文件)和簽名文件

批處理文件如下build.bat

注意:這里可能會在cmd窗口出現中文亂碼机错,這是由于便于問題爬范,不會影響編譯。

快速編譯打包apk腳本

echo 打包開始

sleep 1

執(zhí)行打包命令前弱匪,需要先定位到項目更目錄

cd

執(zhí)行打包命令

gradle a

echo -e? 打包完成

桌面右上角彈出通知

notify-send build.sh 打包完成

創(chuàng)建簽名文件sign.txt

簽名文件之所以放在外邊這里是為了更好的保護簽名文件青瀑,盡量少的給其他人知道《安全考慮》

android {

? ? signingConfigs {

? ? ? ? release {

? ? ? ? ? ? storeFile file('E:\Gsafty\keystoreName.keystore') //絕對路徑

? ? ? ? ? ? storePassword "12345678"

? ? ? ? ? ? keyAlias "alias"

? ? ? ? ? ? keyPassword "12345678"

? ? ? ? }

? ? }

}

將簽名文件應用到app的buid.gradle文件下的Android{}

//加載簽名信息

? ? File configFile = file('../.config/sign.txt')

? ? if (configFile.exists()) {

? ? ? ? def signGradlePath = configFile.newReader().readLine().trim()

? ? ? ? println 'lucher, path:' + signGradlePath

? ? ? ? if (file(signGradlePath).exists()) {

? ? ? ? ? ? apply from: signGradlePath

? ? ? ? }

? ? }

最后就是給開發(fā)人員的福利,在window機器上直接點擊.bat文件執(zhí)行批處理命令萧诫,即可在項目build目錄下的apk目錄下的到對應的apk包斥难。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市帘饶,隨后出現的幾起案子哑诊,更是在濱河造成了極大的恐慌,老刑警劉巖及刻,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镀裤,死亡現場離奇詭異竞阐,居然都是意外死亡,警方通過查閱死者的電腦和手機暑劝,發(fā)現死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門骆莹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人担猛,你說我怎么就攤上這事幕垦。” “怎么了傅联?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵先改,是天一觀的道長。 經常有香客問我纺且,道長盏道,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任载碌,我火速辦了婚禮猜嘱,結果婚禮上,老公的妹妹穿的比我還像新娘嫁艇。我一直安慰自己朗伶,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布步咪。 她就那樣靜靜地躺著论皆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪猾漫。 梳的紋絲不亂的頭發(fā)上点晴,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音悯周,去河邊找鬼粒督。 笑死,一個胖子當著我的面吹牛禽翼,可吹牛的內容都是我干的屠橄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼闰挡,長吁一口氣:“原來是場噩夢啊……” “哼锐墙!你這毒婦竟也來了?” 一聲冷哼從身側響起长酗,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤溪北,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體刻盐,經...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡掏膏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了敦锌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馒疹。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖乙墙,靈堂內的尸體忽然破棺而出颖变,到底是詐尸還是另有隱情,我是刑警寧澤听想,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布腥刹,位于F島的核電站,受9級特大地震影響汉买,放射性物質發(fā)生泄漏衔峰。R本人自食惡果不足惜蛙粘,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一出牧、第九天 我趴在偏房一處隱蔽的房頂上張望舔痕。 院中可真熱鬧伯复,春花似錦啸如、人聲如沸组底。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽告唆。三九已至模她,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尊勿,已是汗流浹背元扔。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留擅羞,地道東北人祟滴。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像草慧,于是被迫代替她去往敵國和親漫谷。 傳聞我的和親對象是個殘疾皇子蹂析,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容