腾讯 VasDolly 接入(快速多渠道打包)
2018-03-08 18:38
501 查看
最近有朋友问关于腾讯VasDolly多渠道打包的接入问题,github上有接入教程,不过在通过Gradle生成多渠道包那一步骤有些问题,本文着重会对这一步骤做详细描述。
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.leon.channel:plugin:1.1.7'
}
apply plugin: 'channel'
dependencies {
api 'com.leon.channel:helper:1.1.7'
}
(1)在
![](https://img-blog.csdn.net/20180308181926844)
(2)在
//指定渠道文件
channelFile = file("../channel.txt")
}
rebuildChannel{
//指定渠道文件
channelFile = file("../channel.txt")
}
//指定渠道文件,一定要找准你项目路径下的文件
channelFile = file("../channel.txt")
//多渠道包的输出目录,默认为new File(project.buildDir,"channel")
baseOutputDir = new File(project.buildDir, "channel")
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}
//命名规则可以不写,直接生成
//快速模式:生成渠道包时不进行校验(速度可以提升10倍以上)
isFastMode = false
}其中,多渠道包的命名规则中,可使用以下字段:
appName : 当前project的name
versionName : 当前Variant的versionName
versionCode : 当前Variant的versionCode
buildType : 当前Variant的buildType,即debug or release
flavorName : 当前的渠道名称
appId : 当前Variant的applicationId
然后,通过
![](https://img-blog.csdn.net/2018030818281997)
以debug版本为例,然后会在输出目录下生成对应市场的apk
![](https://img-blog.csdn.net/20180308183019382)
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下这个问题
接入流程
1.添加对VasDolly Plugin的依赖
在根工程的build.gradle中,添加对打包Plugin的依赖:dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.leon.channel:plugin:1.1.7'
}
2.引用VasDolly Plugin
在主App工程的build.gradle中,添加对VasDolly Plugin的引用:
apply plugin: 'channel'
3.添加对VasDolly helper类库的依赖
在主App工程的build.gradle中,添加读取渠道信息的helper类库依赖:
dependencies {
api 'com.leon.channel:helper:1.1.7'
}
4.配置渠道列表
目前有两种方式配置渠道列表,最终的渠道列表是两者的累加之和:(1)在
gradle.properties文件指定渠道文件名称,该渠道文件必须位于根工程目录下,一行一个渠道信息。channel_file=channel.txt
(2)在
channel或者
rebuildChannel属性中通过
channelFile属性指定渠道文件,一行一个渠道信息。channel{
//指定渠道文件
channelFile = file("../channel.txt")
}
rebuildChannel{
//指定渠道文件
channelFile = file("../channel.txt")
}
6.通过Gradle生成多渠道包(敲黑板)
一种方式直接编译生成多渠道包
若是直接编译生成多渠道包,首先要配置渠道文件、渠道包的输出目录和渠道包的命名规则:channel {//指定渠道文件,一定要找准你项目路径下的文件
channelFile = file("../channel.txt")
//多渠道包的输出目录,默认为new File(project.buildDir,"channel")
baseOutputDir = new File(project.buildDir, "channel")
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}
//命名规则可以不写,直接生成
//快速模式:生成渠道包时不进行校验(速度可以提升10倍以上)
isFastMode = false
}其中,多渠道包的命名规则中,可使用以下字段:
appName : 当前project的name
versionName : 当前Variant的versionName
versionCode : 当前Variant的versionCode
buildType : 当前Variant的buildType,即debug or release
flavorName : 当前的渠道名称
appId : 当前Variant的applicationId
然后,通过
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下这个问题
相关文章推荐
- 借腾讯开源 VasDolly,谈谈 Android 签名和多渠道打包的原理!
- 借腾讯开源 VasDolly,谈谈 Android 签名和多渠道打包的原理!
- 教你快速高效接入SDK——iOS多渠道自动打包工具核心原理
- Android Studio Gradle实践之多渠道自动化打包(Android快速多渠道打包)
- 高效地Android多渠道快速打包
- Android Studio多渠道快速打包
- #号称5秒1000个包的超快速多渠道打包方式
- #号称5秒1000个包的超快速多渠道打包方式
- Android 快速多渠道打包上线实践
- Android 新一代多渠道打包神器--转自腾讯Bugly
- 【开源公告】企鹅电竞多渠道打包组件VasDolly正式开源
- AndroidStudio多AppId多渠道快速打包
- Android packer-ng-plugin 多渠道快速打包
- Android快速多渠道打包
- 美团多渠道快速打包
- AndroidStudio多AppId多渠道快速打包
- Android快速使用Gradle实现多渠道打包
- 结合友盟统计的多渠道快速打包
- 腾讯乐固多渠道打包配置
- 教你快速高效接入SDK——打包工具的实现(反编译资源动态整合打渠道包)