工作中經(jīng)常會(huì)遇到多渠道打包的問(wèn)題,如果每次發(fā)版的時(shí)候,去AndroidManifest.xml修改渠道的值,比較麻煩。可以在gradle中利用manifestPlaceholders這個(gè)屬性來(lái)替換渠道值的方法,下面就講講怎么實(shí)現(xiàn)的吧。
一般用渠道的統(tǒng)計(jì)是友盟或者其它之類的,我們就以友盟的為例吧。
首先你必須在AndroidManifest.xml中的meta-data修改以下的樣子:
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/>
其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定義配置的值。
build.gradle文件就利用productFlavors這樣寫(xiě):
productFlavors {
wandoujia {}
baidu {}
c360 {}
uc {}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
其中name的值對(duì)相對(duì)應(yīng)各個(gè)productFlavors的選項(xiàng)值,這樣就達(dá)到自動(dòng)替換渠道值的目的了。
這樣生成apk時(shí),選擇相應(yīng)的Flavors來(lái)生成指定渠道的包就可以了,而且生成的apk會(huì)自動(dòng)幫你加上相應(yīng)渠道的后綴,非常方便和直觀。
生成渠道包
在android studio底欄中有個(gè)命令行工具Terminal,接著在Terminal中敲下?gradle assembleRelease就可以一次性生成所有的渠道包了
如果想生成單個(gè)安裝包,打開(kāi)Android Studio的Gradle tasks面板(右邊側(cè)邊欄),會(huì)發(fā)現(xiàn)模塊多了很多任務(wù)
此時(shí)可以直接雙擊該任務(wù)生成對(duì)應(yīng)的apk,也可以用命令行單獨(dú)生成,比如 :
gradle assembleWandoujiaRelease