前段時間弄新項目的時候需要配置打包平臺组贺,然后就研究了一下,之前由于都用Android studio 進行構(gòu)建項目祖娘,所以很少用命令行失尖,久而久之對于這些有點陌生。
先上第一張圖:
它是整個工程的一個目錄渐苏,其實也就有多少個module就有多少個
build.gradle
掀潮,第一個代表這整個project的build.gradle,那么咱們看看每個目錄下面都有什么呢琼富?
看到了吧仪吧,其實每個目錄下面都是一堆task,這個task 有的是Android 給你預設好的鞠眉,有的是自己的自定義的
那么我把app/build.gradle里面的代碼改一下成如下:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
dev{
minifyEnabled false
}
}
flavorDimensions "default"
productFlavors{
black{
}
blue{
}
}
注意 buildType 類型的
debug
是默認的薯鼠,你不寫也會默認存在。
上面的代碼中主要增加了 dev
,productFlavors { black,blue}
那么咱們再來看看現(xiàn)在的gradle 發(fā)生了什么變化凡蚜。
是不是多出來幾種人断。再看other里面。
哇朝蜘,竟然進行了排序組合恶迈,這就是productFlavors
的風味的作用了。
進入正題:實際的表現(xiàn)
1.運行 ./gradlew assemble 的結(jié)果
會在output/apk 文件夾下生產(chǎn)
app-black-debug.apk,
app-black-dev.apk,
app-black-release.apk,
app-blue-debug.apk,
app-blue-dev.apk,
app-blue-release.apk,
等6種組合
2.運行 ./gradlew assembleDebug 的結(jié)果
會在output/apk 文件夾下生產(chǎn)
app-black-debug.apk,
app-blue-debug.apk,
等2種組合
3.運行 ./gradlew assembleBlack 的結(jié)果
會在output/apk 文件夾下生產(chǎn)
app-black-debug.apk,
app-black-dev.apk,
app-black-release.apk,
等3種組合
4.運行 ./gradlew assembleBlackDebug 的結(jié)果
會在output/apk 文件夾下生產(chǎn)
app-black-debug.apk,
等1種組合
想必你也能總結(jié)出規(guī)律谱醇,如果只用assemble的話暇仲,gradle 會把 buildType 和productFlavors 組合打包,很顯然命令越清晰副渴,打的包就越精確奈附,這一塊也是多渠道打包的要點,主要是通過配置productFlavots
去進行多渠道打包煮剧,bulidType
控制著打出的包是debug 類型還是release類型
還有交給大家一個小技巧斥滤,大家有沒有發(fā)現(xiàn)這樣的命令是不是很長 啊,在用的過程中這么長很不方便勉盅,gradle 為大家考慮了這件事情佑颇,大家只需要打出命令的首字母就行,比如:
./gradlew assembleRedRelease 就可以用 ./gradlew aRR 代替草娜,注意:bulidType productFlavors 里面最后不要出現(xiàn)首字母一樣的類型挑胸,不然gradle 沒法區(qū)分,我上面舉的例子就不恰當宰闰,./gradlew aBD茬贵,gralde 就區(qū)分不出 是 assembleBlackDebug 簿透、assembleBlackDev、assembleBlueDebug解藻、 assembleBlueDev