美文网首页Android
Android 使用VasDolly实现多渠道打包

Android 使用VasDolly实现多渠道打包

作者: 睿丶清 | 来源:发表于2019-10-25 16:14 被阅读0次

    针对app发布到各大应用市场则对app进行多渠道打包,针对多渠道打包操作使用腾讯VasDolly来实现多渠道打包:

    1.对app进行签名

    2.去github去查阅集成文档是想项目的集成git传送门

    • 在项目根目录下添加配置依赖:

    classpath 'com.leon.channel:plugin:2.0.3'

    2019102501.png
    • 在app目录下gradle文件添加

    apply plugin: 'channel'
    api 'com.leon.channel:helper:2.0.3'

    2019102502.png
    • 在项目根下创建文件channel.txt,用来配置打包的多渠道;
    huawei
    baidu
    360
    魅族
    小米
    oppo
    豌豆荚
    应用宝
    
    
    2019102503.png
    • 多渠道打包配置:

    1.针对没有基础包情况下的打包配置

        channel {
            //指定渠道文件
            channelFile = new File(project.rootDir, "channel.txt")
            //多渠道包的输出目录,默认为new File(project.buildDir,"channel")
            baseOutputDir = new File(project.buildDir, "channel")
            //多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}
            apkNameFormat = '${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}'
            //快速模式:生成渠道包时不进行校验(速度可以提升10倍以上,默认为false)
            isFastMode = false
            //buildTime的时间格式,默认格式:yyyyMMdd-HHmmss
            buildTimeDateFormat = 'yyyyMMdd-HH:mm:ss'
            //低内存模式(仅针对V2签名,默认为false):只把签名块、中央目录和EOCD读取到内存,不把最大头的内容块读取到内存,在手机上合成APK时,可以使用该模式
            lowMemory = false
        }
    

    其中,多渠道包的命名规则中,可使用以下字段:

    • appName : 当前project的name
    • versionName : 当前Variant的versionName
    • versionCode : 当前Variant的versionCode
    • buildType : 当前Variant的buildType,即debug or release
    • flavorName : 当前的渠道名称
    • appId : 当前Variant的applicationId
    • buildTime : 当前编译构建日期时间,时间格式可以自定义,默认格式:yyyyMMdd-HHmmss

    2.VasDolly提供另外一个方式,已经有基础包,根据基础包生成更多的渠道包的打包方式。对gradel配置如下:

        /*根据已有基础包重新生成多渠道包
        rebuildChannel {
            //命令操作打包 gradlew rebuildChannel
            //指定渠道文件
            channelFile = new File(project.rootDir, "channel.txt")
            //存在的基础包路径
            baseDebugApk = 已有Debug APK
            baseReleaseApk = 已有Release APK
            //默认为new File(project.buildDir, "rebuildChannel/debug")
            debugOutputDir = Debug渠道包输出目录
            //默认为new File(project.buildDir, "rebuildChannel/release")
            releaseOutputDir = Release渠道包输出目录
            //快速模式:生成渠道包时不进行校验(速度可以提升10倍以上,默认为false)
            isFastMode = false
            //低内存模式(仅针对V2签名,默认为false):只把签名块、中央目录和EOCD读取到内存,不把最大头的内容块读取到内存,在手机上合成APK时,可以使用该模式
            lowMemory = false
        }*/
    
    • 针对as升级到3,0以上版本需要添加配置
      android.applicationVariants.all { variant ->
            if (variant.buildType.name == "debug") {
                // 服务器地址
                buildConfigField "String", "HOST", "\"http://testBaidu.com/\""
            } else if (variant.buildType.name == "release") {
                // 服务器地址
                buildConfigField "String", "HOST", "\"http://www.baidu.com/\""
            }
            variant.outputs.all {
                outputFileName = "app-${variant.versionName}.apk"
            }
        }
    
    • 万事具备只欠东风,在对gradle配置完成,我们在终端输入对命令可以实现打包的操作:

    1.没有基础包打包命令:

    ./gradlew channelRelease//正是环境打包命令

    ./gradlew channelDebug //测试环境打包命令

    2.有基础包打包命令:

    ./gradlew rebuildChannel

    2019102504.png

    注意:

    在新建项目尝试配置gradle,执行release打包命令时出现如下错误:

    • What went wrong:
      Execution failed for task ':app:channelRelease'.
      SigningConfig is null , please check it

    出现问题时因为在配置签名时缺失

    signingConfig signingConfigs.release//必须配置,不配置会报错

    添加完成后执行命令就可以实现打包操作!

    具体项目源码传送门

    参考文章:

    https://blog.csdn.net/qq_35070105/article/details/80334758

    https://github.com/Tencent/VasDolly

    https://juejin.im/post/5db037d4f265da4d2b34f557#heading-7

    相关文章

      网友评论

        本文标题:Android 使用VasDolly实现多渠道打包

        本文链接:https://www.haomeiwen.com/subject/ibasvctx.html