项目开发的过程都会有打包的需求,如果项目规模不大,对渠道的要求不高可以只打一个release包,然后上传到所有应用市场就行了。但是如果有一些特殊需求,比如做ASO优化,应用数据分析等等就需要打包上传应用市场的时候对渠道进行划分。
今天就简单介绍一下在AS中如果通过gradle来进行渠道划分。整体步骤分为三步
1 在app的build.gradle中添加productFlavors节点,注意节点的位置。并且这个配置需要区分as3.0以下和3.0以上,我们先看一下as3.0以下的配置。
比如要配置小米的渠道包,需要在app的build.gradle文件的android节点中添加一下配置
productFlavors{
xiaomi{
dimension "xiaomi"//描述
manifestPlaceholders=[cid:'xiaomi']//渠道号
}
}
在as3.0以下这样配置是没有问题的,但是在3.0或者以上就会报以下错误
ERROR: All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
大概意思是说,所有flavor的dimension需要保持统一。gradle提供了flavorDimensions字段使得全局保持一个dimension。具体的用法是在defaultConfig节点中增加flavorDimensions字段
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
flavorDimensions "default"
然后渠道配置中的dimension值需要和flavorDimensions保持一致。
2 配置完成productFlavors之后还需要在清单文件中配置mate-data,供后续在代码获取渠道号时使用。
<meta-data
android:name="cid"
android:value="${cid}"/>
3 完成步骤1、2之后就可以在打包时选择相应的渠道包了,至于上文提到的代码获取渠道包,会在下一篇文章中给出代码