多渠道打包的作用:apk--发布到市场上(渠道就是可以下载apk的地方)
1.0:发布到不同渠道上的apk,标记不同的渠道,目的是为了统计该渠道的下载量,留存率等等数据
2.0:了解下载量
3.0:针对性打广告
如果不多渠道打包的话,一个apk包投到数十个市场上,你怎么知道那个市场上下载量最大----多渠道主要是为了运营,让他们根据数据去玩(主要用到了友盟);
多渠道打包的核心原理:给每个apk根据要投放的市场的,打上独有的标识.
apk1--tag1--下载apk1---安装---运行---取出tag1---上传标记和手机唯一标识到服务器--进行判断,手机没有安装过apk--tag1++统计
apk2--tag2--下载apk2---安装---运行---取出tag2---上传标记和手机唯一标识到服务器--进行判断,手机没有安装过apk--tag2++统计
apk3--tag3--下载apk3---安装---运行---取出tag3---上传标记和手机唯一标识到服务器--进行判断,手机没有安装过apk--tag3++统计
apk4--tag4--下载apk4---安装---运行---取出tag4---上传标记和手机唯一标识到服务器--进行判断,手机没有安装过apk--tag4++统计
apk5--tag5--下载apk5---安装---运行---取出tag5---上传标记和手机唯一标识到服务器--进行判断,手机没有安装过apk--tag5++统计
多渠道打包的基本步骤:
01.为apk添加标记(渠道的标识);
02.运行apk的时候取出标记;
03.上传标记给服务器统计;
使用友盟来完成渠道统计:(meta-data在application下配置和配置activity是在一个地方的)
01.只需要在清单配置文件加上这一步即可.剩下的取标记,统计交个友盟.这就是第三方的好处(站在巨人肩膀上开发)
android:name="UMENG_CHANNEL"
android:value="xiaomi" />
02.运行apk的时候,友盟的API,会取出mete-data,
03.上传渠道标记到友盟自己的服务器.用户可以通过友盟的后台查看具体的渠道统计了.
多渠道打包流程:
apk源码--打标记--导出apk
多渠道打包的5种配置方式:(我们程序员在多渠道统计主要做的工作就是多渠道打包)
0.一个一个分别打:修改源代码,修改meta-data,然后打包. 技术难点简单,效率低,操作繁琐
1.ant:要求比较高,需要懂得如何编写ant脚本,但是编写好后执行一个命令即可(ant build) 效率较高,但是难度高,主要流行于eclipse
http://blog.csdn.net/liuhe688/article/details/6679879
2.友盟的打包工具
https://github.com/umeng/umeng-muti-channel-build-tool 已经被淘汰了,早期结合eclipse来用
http://www.kuchuan.com/ 友盟最新版多渠道打包及分析工具,简单方便
http://www.ijiami.cn/Channels 爱加密,app加固及多渠道打包一起完成
使用这些第三方,必须要首先在清单配置文件配置一下<meta-data android:name="UMENG_CHANNEL" android:value="xiaomi" />作为参考
3.Gradle多渠道打包 比较新,使用简单
第一步 在AndroidManifest.xml的application里配置PlaceHolder(注意:是">"外)
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
第二步在模块的build.gradle文件里添加ProductFlavors配置
其中productFlavors{ wandoujia{} }就是对应${UMENG_CHANNEL_VALUE}的值。
productFlavors{
wandoujia{}
qihu360{}
baidu{}
xiaomi{}
uc{}
productFlavors.all{
flavor->flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
其中name的值对相对应各个productFlavors的选项值,这样就达到自动替换渠道值的目的了。
这样生成apk时,选择相应的Flavors来生成指定渠道的包就可以了,而且生成的apk会自动帮你加上相应渠道的后缀,非常方便和直观。大家可以自己反编译验证。
当然,这个方式也是有缺陷的,有一些特定的渠道包不是仅仅修改AndroidManifest.xml就可以的,
比如小米就要求app本身不能有自动更新功能,这需要改动代码,所以就无能为力了。
4.快速打包.
https://github.com/mcxiaoke/packer-ng-plugin
配置完渠道,打多个包:
网友评论