Android多渠道打包方案

Android多渠道打包方案,第1张

概述1、为什么需要多渠道包为了区分同一app不同android市场,也就是说不同的市场(比如小米市场、华为市场、应用宝等)使用不同的渠道包,所用代码一致,只是渠道号channel不一样,这样做是为了方便运营统计。2、多渠道打包方案2.1 友盟多渠道打包将渠道标识放到 AndroidManifest.xml 1、为什么需要多渠道包

为了区分同一app不同androID市场,也就是说不同的市场(比如小米市场、华为市场、应用宝等)使用不同的渠道包,所用代码一致,只是渠道号 channel 不一样,这样做是为了方便运营统计。

2、多渠道打包方案2.1 友盟多渠道打包

将渠道标识放到 AndroIDManifest.xml 中的 Meta-data 中;

在 gradle 编译的时候,根据这个配置将Meta-data中的占位符替换成对应的值;

获取渠道时,androID代码中读取 UMENG_CHANNEL 的值,添加到请求参数中。

AndroIDManifest.xml:

<Meta-data

    androID:name="UMENG_CHANNEL"

    androID:value="${UMENG_CHANNEL_VALUE}"/>

在app的 build.gradle 中配置渠道号:

androID {

    productFlavors {

        yingyongbao {

            manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"yingyongbao" ]

        }

        baIDu {

            manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"BaIDu"]

        }

    }

}

优点:不依赖其他工具,gradle自己就可以。

缺点:每个渠道都重新打包,耗时;渠道包DEX的CRC值不一致,不利于热更新。(热更新:打出基础包APK和新包APK的差异补丁,用户不需要更新app,下载补丁,把补丁和基础包APK合成新包APK,就要求生成补丁的基础包DEX和用于合成新包的基础包DEX是全然一致)

2.2 ApkTool 解包重签名

替换Assets里的资源文件:

解压缩-->删除签名信息-->写入签名文件assets/channel.conf-->压缩-->重新签名

优点:不需要再次编译Java代码

缺点:解压签名再压缩同样较为耗时;不稳定,升级Gradle Plugin版本后,可能导致解包低版本的APK失败。

2.3 360多渠道打包

zip文件末尾有个comment区域,相当于注释内容,修改该区域内容不影响APK内容。

优点:不破坏签名、不重新打包;高效、1s内可以打300多个包;在下载apk的同时,服务端可以写入一些信息,例如邀请码,分享信息等

缺点:由于Android7.0加入了v2技术,该方法Android7.0以下会校验失败;渠道信息容易被改变。

2.4 美团早期应对v1签名

 /meta-inf对签名机制是豁免的,在签名后的APK中,在 /meta-inf 目录下,增加“mtchannel_渠道号”空文件,文件名来表示渠道号。

优点:耗时较短,平均出包0.05s

缺点:由于Android7.0加入了v2技术,在v2技术下, /meta-inf模块也会经过签名校验,该方法Android7.0以下会校验失败;渠道信息容易被改变,不法渠道商可通过工具进行网络劫持篡改渠道号。

2.5 美团的 Walle(瓦力)

在Apk中的APK Signing Block区块添加自定义的渠道信息来生成渠道包:

在v2签名后的APK中ID-value进行扩展,提供自定义的ID-value(渠道信息),保存在APK中;

apk在安装的过程中,会忽略这个ID-value,从而正常安装;

app在运行时,通过中央目录、中央目录结尾等结构中的信息找到ID-value,从而实现获取多渠道信息的功能

优点:打包耗时短,因为只需要复制APK,增加ID-value,对于30M大小的包只需要100多毫秒生成一个渠道包;运行时获取渠道信息只需要约几毫秒。

2.6 腾讯的 VasDolly

v1签名时,利用zip的comment区域,在EOCD区域的comment区域增加渠道信息。

v2签名时,增加的APK 签名块,来记录签名信息,该区域包含了多个键值对,因此,可以增加一个额外的 ID-值,用来记录渠道信息。

先检测签名类型,再选择合适的签名方式。

优点:同时支持v1、v2签名。

目前使用的多渠道方案:

 

相关链接:

https://www.jianshu.com/p/1e9bb813e39d

https://www.jianshu.com/p/8d525a405b6f

https://blog.csdn.net/mayn666/article/details/79878469

https://tech.meituan.com/2017/01/13/android-apk-v2-signature-scheme.html

https://github.com/Tencent/VasDolly/wiki/VasDolly实现原理

总结

以上是内存溢出为你收集整理的Android多渠道打包方案全部内容,希望文章能够帮你解决Android多渠道打包方案所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1019467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存