阅读 451

Android_腾讯VasDolly多渠道打包神器(2021版)

本文目标

高效构建渠道包

什么是多渠道包

渠道包就是要在安装包APK中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场,360市场,应用宝市场等,需要为每个apk包设定一个可以区分渠道的标识,为这个apk包设定应用市场标识的过程就是多渠道打包.

为什么要提供多渠道包

国内存在着众多的应用市场,产品在不同的渠道可能有不同的统计需求,为此Android开发人员需要为每个应用市场发布一个安装包,在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计.

可商用的多渠道自动化打包方案



明显发现腾讯的VasDolly更胜一筹,而且支持搭配tinker使用


如何集成vasDolly

1.在项目根目录添加插件

    dependencies {
        classpath 'com.leon.channel:plugin:2.0.3'
    }

2.在项目根目录新建渠道列表flavor_channel.txt

xiaomi //每行一个渠道huawei
vivo
oppo
meizu

3.根目录新建flavor_channel.gradle

apply plugin: 'channel'channel {
    //指定渠道文件
    channelFile = file("../flavor_channel.txt")
    println("channelFile:" + channelFile.exists())
    //多渠道包的输出目录,默认为new File(project.buildDir,"channel")
    baseOutputDir = new File(project.buildDir, "channel")
    //多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}
    apkNameFormat = '${appName}-${versionName}-${flavorName}-${buildType}'
    //快速模式:生成渠道包时不进行校验(速度可以提升10倍以上,默认为false)
    isFastMode = false
    //buildTime的时间格式,默认格式:yyyyMMdd-HHmmss
    buildTimeDateFormat = 'yyyyMMdd-HH:mm:ss'
    //低内存模式(仅针对V2签名,默认为false):只把签名块、中央目录和EOCD读取到内存,不把最大头的内容块读取到内存,在手机上合成APK时,可以使用该模式
    lowMemory = false}/**
 * apkNameFormat支持以下字段:
 *
 * appName : 当前project的name
 * versionName : 当前Variant的versionName
 * versionCode : 当前Variant的versionCode
 * buildType : 当前Variant的buildType,即debug or release
 * flavorName : 当前的渠道名称
 * appId : 当前Variant的applicationId
 * buildTime : 当前编译构建日期时间,时间格式可以自定义,默认格式:yyyyMMdd-HHmmss
 **/dependencies {
    //多渠道
    api 'com.leon.channel:helper:2.0.3'}

4.在app下的build.gradle文件中应用

apply from: '../flavor_channel.gradle'

5.读取渠道信息
通过helper类库中的ChannelReaderUtil类读取渠道信息

String channel = ChannelReaderUtil.getChannel(getApplicationContext());

基本使用

点击gradle的channelRelease就会自动构建打包



上图中的release文件中就是所有的渠道包了

基于加固包或基准包打渠道包

在flavor_channel.gradle文件中添加rebuildChannel,如下图

apply plugin: 'channel'//根据已有基础包重新生成多渠道包//若是根据已有基础包重新生成多渠道包,首先要配置渠道文件、基础包的路径和渠道包的输出目录:rebuildChannel {
    //指定渠道文件
    channelFile = new File("../flavor_channel.txt")
    println("rebuildChannel:" + channelFile.exists())
    //debug基础包和release基础包
    baseDebugApk = new File(project.buildDir, "outputs/packers/app-release_10_jiagu_sign.apk")
    baseReleaseApk = new File(project.buildDir, "outputs/packers/app-release_10_jiagu_sign.apk")
    //debug渠道包和release渠道包
    debugOutputDir = new File(project.buildDir, "outputs/rebuildChannel/debug")
    releaseOutputDir = new File(project.buildDir, "outputs/rebuildChannel/release")
    //快速模式:生成渠道包时不进行校验(速度可以提升10倍以上,默认为false)
    isFastMode = false
    //低内存模式(仅针对V2签名,默认为false):只把签名块、中央目录和EOCD读取到内存,不把最大头的内容块读取到内存,在手机上合成APK时,可以使用该模式
    lowMemory = false}dependencies {
    //多渠道
    api 'com.leon.channel:helper:2.0.3'}

根据已有基础包重新生成多渠道包,若是根据已有基础包重新生成多渠道包,首先要配置渠道文件、基础包的路径和渠道包的输出目录
配置成功后

基于加固包去打多渠道包
指令在: app---> Tasks---> channel---> reBuildChannel
多渠道包打包成功后apk路径:/Users/houyadong/iProject/ASProj/app/build/outputs/rebuildChannel/release/huawei-app-release_10_jiagu_sign.apk 
/Users/houyadong/iProject/ASProj/app/build/outputs/rebuildChannel/release/meizu-app-release_10_jiagu_sign.apk/Users/houyadong/iProject/ASProj/app/build/outputs/rebuildChannel/release/oppo-app-release_10_jiagu_sign.apk 
/Users/houyadong/iProject/ASProj/app/build/outputs/rebuildChannel/release/vivo-app-release_10_jiagu_sign.apk

上图目录中就是渠道包了,是基于360加固包打的多渠道包



作者:信仰年輕
链接:https://www.jianshu.com/p/9f3d03089773
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐