我们须要使用一个变量标明该app的渠道。通常我们能够在manifest中的application节点下声明。例如以下。
然后将CHANNEL_VALUE的值替换成相应的渠道名。我们能够使用gradle的flavor替我们完毕
productFlavors { wandoujia {} qihu360 {} baidu {} hiapk {} shoujizhushou {} tencent {} xiaomi {} anzhi {} uc {} appchina {} wangyi {} mumayi {} huawei {} lenovo {} flyme {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name] }
当然有时候我们须要配置某些渠道自己主动更新,某些渠道部自己主动更新,这时候须要一个变量来标明。
我们让全部渠道默认支持自己主动更新,让豌豆荚的不进行自己主动更新。
defaultConfig { buildConfigField "boolean", "AUTO_UPDATES", "true" }
productFlavors { wandoujia { buildConfigField "boolean", "AUTO_UPDATES", "false" }}
在程序中能够这样获得该变量
boolean autoUpdate=BuildConfig.AUTO_UPDATES;
甚至有时候须要更改生成的apk的名字,这时候能够自定义生成的名字
//获取产品名def getProductName() { return "ProductName"}//获取时间戳def getDate() { def date = new Date() def formattedDate = date.format('yyyyMMddHHmm') return formattedDate}android { ... //改动生成的apk名字 applicationVariants.all { variant -> variant.outputs.each { output -> def oldFile = output.outputFile def newName = ''; if (variant.buildType.name.equals('release')) { def releaseApkName = getProductName() + "-v${defaultConfig.versionName}-" + variant.productFlavors[0].name + '-signed.apk' output.outputFile = new File(oldFile.parent, releaseApkName) } if (variant.buildType.name.equals('beta')) { newName = getProductName() + "-v${defaultConfig.versionName}-" + variant.productFlavors[0].name + "-build" + getDate() + ".apk" output.outputFile = new File(oldFile.parent, newName) } if (variant.buildType.name.equals('debug')) { newName = getProductName() + "-v${defaultConfig.versionName}-" + variant.productFlavors[0].name + "-debug" + getDate() + ".apk" output.outputFile = new File(oldFile.parent, newName) } } }}
最后我们还须要在程序中获得我们的渠道名进行兴许的一些操作。比方做一些统计之类的工作
String channel=AppUtil.getMetaValue(this,"CHANNEL_NAME"); Log.d("TAG",channel);
一切完毕之后,我们就能够生成渠道包了
打开终端,输入下面命令回车就生成了全部的渠道包gradlew assembleRelease
此外还能够点击andorid studio右边悬停的的gradlebutton,弹出的窗体里面有个圆形的execute gradle task的button,command Line里输入assembleRelease点击ok也能够生成全部渠道包
生成全部渠道包须要一点时间,生成完毕后在app/build/outputs/apk文件夹下会有生成的全部的包。将相应的包上传至相应的渠道就可以。