前言
今天新项目上架,在gradle打包上传到各大APP市场后,因为上传的市场太多 需要构建多渠道自动化打包
解决
我们在项目中经常会引入一些统计sdk 需要为不同的渠道包修改渠道信息 便于统计
可以在配置清单中修改为自定义值,这里以友盟为例
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
在app下build.gradle设置多渠道
android3.0改版后需要为flavor设置dimension
flavorDimensions "default"
//渠道配置
productFlavors {
web {}
baidu {}
c360 {}
qq {}
oppo {}
vivo {}
huawei {}
mi {}
meizu {}
lenovo {}
leshi {}
sogou {}
wandoujia {}
samsung {}
}
//渠道遍历将name替换为配置清单的${UMENG_CHANNEL_VALUE}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name, JPUSH_CHANNEL: name,UMENG_CHANNEL_VALUE: name]
}
//自定义APK名称,多渠道打包
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
variant.productFlavors.each { flavor ->
def project = "cat"
def separator = "_"
def buildType = variant.variantData.variantConfiguration.buildType.name
def versionName = variant.versionName
def versionCode = variant.versionCode
def date = new Date()
def formattedDate = date.format('yyyyMMdd')
//测试版本名
def apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + ".apk"
if (buildType == "release") {//发布版本名
apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + separator + formattedDate + ".apk"
}
output.outputFileName = apkName
}
}
}
如此 打全部发布包 gradle assembleRelease 打个别发布包 gradle assembleWandoujiaRelease 只需要一行代码搞定,当然测试包和发布包也可以一起打 分别打,开发效率加快好多
End