在 gradle里 怎么取到渠道号,赋值给 AndroidManifest 里呢?
jeffreyxuworld opened this issue · comments
Lei commented
如果项目之前是通过 AS 手动打包的形式,在主 App 工程的 build.gradle 和 AndroidManifest.xml 里做了一些渠道包相关信息的配置。现在用了 Walle 的方案,要对自己工程里相关的代码进行更改。
1、 AndroidManifest.xml 里,友盟 SDK 需要获取应用的渠道名称
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
2、在主 App 工程的 build.gradle 中,写了如下代码:
flavorDimensions "versionCode", "serverUrl"
applicationVariants.all { variant ->
variant.outputs.all { output ->
def fileName
if (variant.buildType.name == "release") {
fileName = "XXAPP-${variant.productFlavors[0].name}-${variant.versionName}-Android.apk"
} else {
fileName = "XXAPP-Android.apk"
}
outputFileName = fileName
}
}
productFlavors {
yingyongbao {
dimension "versionCode"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
}
huawei {
dimension "versionCode"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "huawei"]
}
xiaomi {
dimension "versionCode"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
oppo {
dimension "versionCode"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "oppo"]
}
vivo {
dimension "versionCode"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "vivo"]
}
baidu {
dimension "versionCode"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
urlTest {
dimension "serverUrl"
buildConfigField("int", "SERVER_TYPE", "1")
}
urlOnline {
dimension "serverUrl"
buildConfigField("int", "SERVER_TYPE", "2")
}
}
这些渠道包相关的配置,会和 Walle 的方案有所冲突。目前通过屏蔽这些和渠道包配置相关的代码,可以正常打出渠道包。
那么我在 gradle 里怎么取到渠道号,赋值给 AndroidManifest 里呢?
比如这么写:
def flavorName() {
return ""
}
manifestPlaceholders = [
UMENG_CHANNEL_VALUE: flavorName()
]
在 gradle 里 flavorName() 里的代码应该怎么写
yifang commented
兄弟你有解决办法了吗
Anderson huang commented
同问
yiranshaxiao commented
AndroidManifest.xml 不再设置 UMENG_CHANNEL 信息,而是通过初始化代码设置。
参见官网