对于多渠道打包,我们可以使用友盟,因为一般友盟统计是大家日常开发中常用的渠道统计工具,而我们的打包方法就是基于友盟统计实施的。按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值:
多渠道打包的配置youmeng
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"/>
上面的value值Channel_ID就是渠道标识。我们的期望的就是在编译时候这个值能够自动变化以满足区分多渠道的需求。
1、上面第一步已经结束。
2、第二步是:在build.gradle设置productFlavors如下
android{
productFlavors {
fir {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "fir"]
}
GooglePlay {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "GooglePlay"]
}
Umeng {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "Umeng"]
}
}
}
或者批量修改
android{
productFlavors {
fir {}
GooglePlay { }
Umeng {}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders [UMENG_CHANNEL_VALUE: name]
}
}
所谓ProductFlavors其实就是可定义的产品特性,配合 manifest merger 使用的时候就可以达成在一次编译过程中产生多个具有自己特性配置的版本。
3、第三步就是执行打包
在AndroidStudio菜单栏点击Build菜单–>Generate signed APK–>选择key,并输入密码 然后然后下一步,选择打包渠道即可。
(注意:signingConfigs代码块一定要写在buildTypes前面)
android{
buildTypes {
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
debuggable true
applicationIdSuffix ".debug"
}
release {
buildConfigField "boolean", "LOG_DEBUG", "false"
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = "Meizhi_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
productFlavors {
fir {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "fir"]
}
GooglePlay {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "GooglePlay"]
}
Umeng {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "Umeng"]
}
}
}
–>路要一步一步走,记住自己走过的路,不再犯同样的错误,才是真正的成长!欢迎指点、交流。<–