最近有朋友问关于腾讯VasDolly多渠道打包的接入问题,github上有接入教程,不过在通过Gradle生成多渠道包那一步骤有些问题,本文着重会对这一步骤做详细描述。
在根工程的build.gradle
中,添加对打包Plugin的依赖:
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.leon.channel:plugin:1.1.7'
}
在主App工程的build.gradle
中,添加对VasDolly Plugin的引用:
apply plugin: 'channel'
在主App工程的build.gradle
中,添加读取渠道信息的helper类库依赖:
dependencies {
api 'com.leon.channel:helper:1.1.7'
}
目前有两种方式配置渠道列表,最终的渠道列表是两者的累加之和:
(1)在gradle.properties
文件指定渠道文件名称,该渠道文件必须位于根工程目录下,一行一个渠道信息。
channel_file=channel.txt
(2)在channel
或者rebuildChannel
属性中通过channelFile
属性指定渠道文件,一行一个渠道信息。
channel{
//指定渠道文件
channelFile = file("../channel.txt")
}
rebuildChannel{
//指定渠道文件
channelFile = file("../channel.txt")
}
若是直接编译生成多渠道包,首先要配置渠道文件、渠道包的输出目录和渠道包的命名规则:
channel {
//指定渠道文件,一定要找准你项目路径下的文件
channelFile = file("../channel.txt")
//多渠道包的输出目录,默认为new File(project.buildDir,"channel")
baseOutputDir = new File(project.buildDir, "channel")
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}
//命名规则可以不写,直接生成
//快速模式:生成渠道包时不进行校验(速度可以提升10倍以上)
isFastMode = false
}
其中,多渠道包的命名规则中,可使用以下字段:
然后,通过gradle channelDebug
、gradle channelRelease
命令分别生成Debug和Release的多渠道包。
以debug版本为例,然后会在输出目录下生成对应市场的apk
若是根据已有基础包重新生成多渠道包,首先要配置渠道文件、基础包的路径和渠道包的输出目录:
rebuildChannel{
baseDebugApk = new File(project.projectDir, "outputs/apk/debug/app-base-debug.apk")//一定要写准基准包所在位置
baseReleaseApk = new File(project.projectDir, "rebuildChannel/debug")
}
一定要写准基准包所在位置,而且命名中要包含base,
这里“rebuildChannel”生成渠道包时,会用新渠道名替换已有基础包的“base”字符串,但是"outputs/apk/app-release.apk"不包含“base”字符串,所以新的渠道包名字还是app-release.apk,因此后面的APK就把前面的覆盖了,最后只出现一个。短期解决就是改下基础包的命名“app-base-release.apk”,后续作者说发个版本fix下这个问题