当前位置:网站首页>多渠道打包
多渠道打包
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
),然后根据需求把渠道链接或者二维码分发到各个渠道,统计数据。
参考
边栏推荐
猜你喜欢
The problem of disorganized data output by mnn model
c语言分层理解(c语言操作符)
【面经】被虐了之后,我翻烂了equals源码,总结如下
What warehouse management problems can WMS warehouse management system solve in the electronics industry?
R3LIVE论文学习(二):VIO子系统
Web3 安全风险令人生畏?应该如何应对?
ping数据包中的进程号
哎,又跟HR在小群吵了一架!
【详细教程】一文参透MongoDB聚合查询
600MHz频段来了,它会是新的黄金频段吗?
随机推荐
Justin Sun: Web3.0 and the Metaverse will assist mankind to enter the online world more comprehensively
快速入门EasyX图形编程
Nanoprobes 棕榈酰纳米金相关说明书
jmeter distributed stress test
C 学生管理系统 显示链表信息、删除链表
typescript52-简化泛型函数调用
dynamic memory two
Vant3 - click on the corresponding name name to jump to the next page corresponding to the location of the name of the TAB bar
Modulo operation (MOD)
2022-08-03: What does the following go code output?A: 2; B: 3; C: 1; D: 0.package main import "fmt" func main() { slice := []i
typescript55-泛型约束
Shell编程之循环语句(for、while)
TypeScript学习
typescript53 - generic constraints
The problem of disorganized data output by mnn model
vxe-table 从页面批量删除数据 (不动数据库里的数据)
typescript57 - Array generic interface
分析:Nomad Bridge黑客攻击的独特之处
typescript48-函数之间的类型兼容性
Apache DolphinScheduler新一代分布式工作流任务调度平台实战-中