Android打包那些事---多渠道打包

为什么要分渠道打包

渠道打包的目的是为了针对不同的市场,做一些统计,数据分析。来看下Umeng统计是怎么说的。

友盟帮助移动应用开发商统计和分析流量来源、内容使用、用户属性和行为数据,以便开发商利用数据进行产品、运营、推广策略的决策。
接着,再来看看百度移动统计。

如何多渠道打包

接下来介绍2中多渠道打包的方法。

  • Android Studio多渠道打包方法。
    以Umeng统计为例,具体怎么集成就不说了,看Umeng官方文档。Umeng
    在配置文件中配置
<meta-data android:name="UMENG_CHANNEL"
            android:value="${UMENG_CHANNEL_VALUE}"/>

注意:该配置和4大组件同级。
接着,在gradle脚本中添加如下代码。

productFlavors {
        baidu {
        }
        wandoujia {
        }
        xiaomi {
        }

    }
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }

注意flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name],这里的要和配置文件中的value一致。一般来说,这样就可以了。Build->generate signed apk,等待便可生成签名的渠道包。生成的渠道包在build->outputs->apk目录下。或者,我们也可以在AS自带的 Terminal中,./gradlew assembleRelease(MAC版命令) 生成渠道包。或者,我们还可以右侧Gradle->Tasks->build下生成对应的渠道包。(ps:这是没签名的)。如图

。我们来看看生成的包吧。在这里我并没有签名。

呀,名字看起来很长啊,有办法变得明显一点么。答案是有的。在gradle脚本的buildTypes下添加如下代码。

applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk
                        def fileName = "${variant.productFlavors[0].name}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }

上面的代码将apk文件重命名为渠道包名称。
接下来在代码中通过

String channel=AppUtil.getMetaValue(this,"CHANNEL_NAME");

来获取渠道名。

额,多的不多说了,这个不是重点,感兴趣的去看这2位大神。我的这些东西是模仿他们的。
stormzhang
Android弟

上面的多渠道打包方法每生成一个渠道包都要重新打包,可想而知,当渠道多的飞起的时候,这种方案也会慢的飞起。那么,就来介绍另一种方案。
美团Android自动化之旅
那篇文章介绍了原理,这里我再简单的说下。就是在META-INF文件夹下,插入一个代表渠道的空文件。然后在java带按摩中获取文件名来当做渠道名。
github地址
这个工具非常简单。只需要将apk文件放到PythonTool目录下。

在终端,
,
即可生成。好了,你们也快去试试吧。

参考:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值