众所周知,国内Android
应用市场碎片化严重,每当应用发布一个新的版本的时候,就需要分发到每一个应用市场中去,比如,360手机助手,小米应用市场,华为应用市场等。为了能够统计每个应用市场的下载量、活跃量,就必须用一个标记来区分这些不同市场分发下去的应用,渠道号也就应运而生。这些渠道包需要携带不同的渠道参数信息,以便在APP
和后台交互或者数据上报时,各自带上用于区分不同渠道的参数信息。 这样,我们就能统计到每一个分发市场的安装量、注册量等重要数据。随着渠道的不断增加,需要生成的渠道包也就越来越多。 在打包的过程中,我们一般都是使用gradle
来进行的。gradle
为我们的打包提高了很多的便利,多渠道打包也可以轻松实现。
首先在AndroidManifest.xml
文件中定义一个meta-data
:
<meta-data
android:name="CHANNEL"
android:value="${CHANNEL_VALUE}" />
然后在gradle
文件中设置一下productFlavors
:
android {
productFlavors {
xiaomi {
manifestPlaceholders = [CHANNEL_VALUE: "xiaomi"]
}
_360 {
manifestPlaceholders = [CHANNEL_VALUE: "_360"]
}
baidu {
manifestPlaceholders = [CHANNEL_VALUE: "baidu"]
}
wandoujia {
manifestPlaceholders = [CHANNEL_VALUE: "wandoujia"]
}
}
}
productFlavors
是为了在同一个项目中创建应用的不同版本。具体的配置信息可以看官方说明。最后,执行gradle aS
就可以将所有的渠道包输出了。
虽然gradle
配置多渠道打包很简单,也很方便,但是这种方式存在一个致命的缺陷,那就是费时间。因为AndroidManifest.xml
文件被修改过了,所以所有的包都必须重新编译签名。一般来说100
个渠道包就要至少一个小时的时间。更要命的是万一哪里需要微调一下代码或者文案,那么不好意思,一切又得重头来。这就很麻烦了,所以有没有什么方法可以快速完成打包呢?
关于渠道打包工具,目前在市面上有很多,其中最简单快捷的一家是openinstall
,只需要上传一个标准的安装包,即可根据需求一键导出多个不同参数的渠道包进行分包统计。同时每次产品更新都无需开发技术人员参与,任何人员都可以简单快速的完成渠道包的生成与导出APK
。
同时openinstall
还有一种免打包的服务,通过渠道链接代替渠道包的方式来统计数据。只需要openinstall
的后台上传一个标准的安装包,即可无限生成不同的渠道链接或者二维码(兼容Android/iOS
),然后根据需求把渠道链接或者二维码分发到各个渠道,统计数据。