android_studio多渠道打包

前两天给项目增加下载量来源统计功能,在这里介绍一下项目多渠道打包。

这里以友盟统计为例,在AndroidManifest文件里面是:

<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>

Channel ID就是渠道标识,市场上的下载渠道很多,不可能填写一次这个ID就打一次包,那会耗费很多无谓的时间和精力,所以我们需要一次性把多个渠道打包出来。

android studio 在build.gradle里面增加:

productFlavors {
    xiaomi {}
    _360 {}
    baidu {}
    wandoujia {}
    yingyongbao {}
    /*** 根据项目实际情况添加渠道 ***/
}
productFlavors.all {
    flavors -> flavors.manifestPlaceholders =[UMENG_CHANNEL_VALUE: name]
}

然后直接执行./gradlew assembleRelease 后等待一会就ok了,打包成功后可在app\build\outputs\apk 路径看到打包成功后的apk。

介绍一下assemble命令:

  • 只打包小米渠道的release版本:./gradlew assembleXiaomiRelease
  • 打包小米渠道的release和debug版本:./gradlew assembleXiaomi
  • 打包全部release版本:./gradlew assembleRelease

以上是多渠道打包的内容,下面介绍一下打包自动命名apk。

同样是在build.gradle里面:

buildTypes {
    debug {
        /**** 省略一些内容 ****/
    }
    release {
        /**** 省略一些内容 ****/
        // 将release版本的包名重命名,加上版本、日期和渠道
        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                def outputFile = output.outputFile
                if (outputFile != null && outputFile.name.endsWith('.apk')) {
                    // 输出apk名称为hhdb_v1.0_2016-10-04_wandoujia.apk
                    def fileName = "hhdb_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
                    output.outputFile = new File(outputFile.parent, fileName)
                }
            }
        }
    }
}

添加之后build一下,会发现报错,是因为没有releaseTime方法,这个方法是自己添加的,同样在build.gradle里面头部添加:

def releaseTime() {
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}

完成了,收工(⊜‿⊜)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值