当前位置:网站首页>多渠道打包
多渠道打包
2022-08-04 00:53:00 【橙子19911016】
众所周知,国内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
),然后根据需求把渠道链接或者二维码分发到各个渠道,统计数据。
参考
边栏推荐
- .NET Static Code Weaving - Rougamo Release 1.1.0
- 114. 如何通过单步调试的方式找到引起 Fiori Launchpad 路由错误的原因
- typescript58-泛型类
- Using matlab to solve the linear optimization problem based on matlab dynamic model of learning notes _11 】 【
- Web3 security risks daunting?How should we respond?
- 面试必问的HashCode技术内幕
- js函数防抖和函数节流及其使用场景
- 轻量级网络整理及其在Yolov5上的实现
- Vant3 - click on the corresponding name name to jump to the next page corresponding to the location of the name of the TAB bar
- 迭代扩展卡尔曼滤波IEKF
猜你喜欢
Getting started with MATLAB 3D drawing command plot3
一文参透分布式存储系统Ceph的架构设计、集群搭建(手把手)
It will invest about 200 billion US dollars in the United States in 20 years, and Samsung Electronics looks so handsome
Talking about the future development direction of my country's industrial parks
Using matlab to solve the linear optimization problem based on matlab dynamic model of learning notes _11 】 【
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三:两次优化
ENS域名注册量创历史新高 逆市增长之势?光环之下存在炒作风险
七夕活动浪漫上线,别让网络拖慢和小姐姐的开黑时间
轻量级网络整理及其在Yolov5上的实现
2015年开源大事件汇总
随机推荐
Web3 security risks daunting?How should we respond?
typescript48 - type compatibility between functions
【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘
114. How to find the cause of Fiori Launchpad routing error by single-step debugging
SQL优化的一些建议,希望可以帮到和我一样被SQL折磨的你
分布式事务框架 seata
动态内存二
BGP实验(含MPLS)
GeoAO:一种快速的环境光遮蔽方案
typescript55 - generic constraints
手撕Gateway源码,今日撕工作流程、负载均衡源码
【超详细教程】LVS+KeepAlived高可用部署实战应用
js中常用的几种遍历处理数据的方法梳理
共享新能源充电桩充电站建设需要些什么流程及资料?
MPLS Comprehensive Experiment
越来越火的图数据库到底能做什么?
.NET静态代码织入——肉夹馍(Rougamo) 发布1.1.0
How to find the cause of Fiori Launchpad routing errors by single-step debugging
一文参透分布式存储系统Ceph的架构设计、集群搭建(手把手)
js函数防抖和函数节流及其使用场景