VasDolly
VasDolly copied to clipboard
在 gradle里 怎么取到渠道号,赋值给 AndroidManifest 里呢?
如果项目之前是通过 AS 手动打包的形式,在主 App 工程的 build.gradle 和 AndroidManifest.xml 里做了一些渠道包相关信息的配置。现在用了 VasDolly 的方案,要对自己工程里相关的代码进行更改。 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")
}
}
这些渠道包相关的配置,会和 VasDolly 的方案有所冲突。目前通过屏蔽这些和渠道包配置相关的代码,可以正常打出渠道包。 那么我在 gradle 里怎么取到渠道号,赋值给 AndroidManifest 里呢? 比如这么写:
def flavorName() {
return ""
}
manifestPlaceholders = [
UMENG_CHANNEL_VALUE: flavorName()
]
在 gradle 里 flavorName() 里的代码应该怎么写
无法赋值给 AndroidManifest 但是可以指定友盟channel
//友盟渠道包初始化
String channel = ChannelReaderUtil.getChannel(mainApplication);
UMUtils.setChannel(mainApplication, channel);
嗯,可以用友盟提供的setChannel方法