原理:只要往AndroidManifest中注入一个能够区分渠道的标识就可以了
实际做法,为了能够动态注入一个渠道标识,就必须使用gradle进行动态选择渠道赋值
1、在App的AndroidManifest.xml文件下,新增meta-data
data android:name="UMENG_CHANNEL" - android:value="${UMENG_CHANNEL_VALUE}" />
2、在App的build.gradle 的android下新增
- /**
- * 必须要保证所有的flavor 都属于同一个维度
- */
- flavorDimensions "default"
注意:不加这一个会报错
解决Error:All flavors must now belong to a named flavor dimension
- /**
- * 配置渠道
- */
- productFlavors {
-
- //官方
- official {}
-
- //华为
- huawei {}
-
- //应用宝
- tencent {}
- }
-
- /**
- * 渠道赋值,AndroidManifest 中的"UMENG_CHANNEL_VALUE"参数
- * 打所有包命令:gradlew clean :assembleRelease
- */
- productFlavors.all { flavor ->
- flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE:name]
- }
案例:
- <application
- ...>
-
- <meta-data android:name="UMENG_CHANNEL"
- android:value="${UMENG_CHANNEL_VALUE}" />
- application>
- android{
-
- ...省略前面
-
-
- /**
- * 必须要保证所有的flavor 都属于同一个维度
- */
- flavorDimensions "default"
-
- /**
- * 1、配置渠道
- */
- productFlavors {
-
- //官方
- official {}
-
- //华为
- huawei {}
-
- //应用宝
- tencent {}
- }
-
- /**
- * 2、渠道赋值,AndroidManifest 中的"UMENG_CHANNEL_VALUE"参数
- * 3、打所有包:gradlew clean :assembleRelease
- */
- productFlavors.all { flavor ->
- flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE:name]
- }
- }