ios移动应用程序中添加了一个马甲包

网络新闻 3年前 (2022) admin
0

火资源软件10月5日消息,最近,该公司的一款使用正在经过多个渠道实行推行。渠道在推行进程中,应用app马甲包(外部功用不变,只是App图标称号不同)添加关键词掩盖。

ios移动应用程序中添加了一个马甲包由于运营部门需求准确统计每个渠道和每个马甲包的下载量和用户注册量,所以需求为每个额定的渠道马甲包手动添加productFlavors中的配置。

渠道里背心袋不多的时分,手工打包还可以,渠道里背心袋越来越多。到目前为止,有5000多个马甲包。假如手工打包,不只会严重拖慢发布进度,还会由于反复的手工而让开发苦不堪言。

后来我们研讨了一套全自动散布式多通道背心袋包装方案,认识到只需求半个小时就可以完成5000多个通道背心袋,再也不必担忧加班了!

ios移动应用程序中添加了一个马甲包为什么传统的多渠道包装方式速度慢?美团沃乐的多渠道打包工具为什么快?全自动散布式多通道马甲袋包装方案分享总结为什么传统的多通道包装方式速度慢?假如你想要频道统计,使用程序中必需有一个字段来标识不同的频道。App中不同频道包的频道标识一定是不一样的,所以我们需求在每个频道包之前手动更改这个频道标识。

换频道logo能有多慢?

确实,换频道logo很复杂。只需求几秒钟。Android还可以经过productFlavors配置文件提早配置马甲包的相位信息,然后经过不同的打包命令构建不同的通道包。

但是,耗时的是包装APK包的进程。依据Android项目大小不同,电脑配置不同,每个包需求几分钟到十几分钟是正常的。

能不能只打一个包,复制一个,写不同的通道标识符?

想法是好的,但是完成不了,由于安卓使用里有签名验证机制。Android系统要求一切的APK必需用证书实行数字签名,然后才干在设备上装置或更新。

ios移动应用程序中添加了一个马甲包

假如APK文件发作更改,签名验证将无法经过,APK包将无法装置或更新。

做一个包,然后复制写不同的通道标识符,这是一个正确的思绪。虽然通道标识符不能在打包后间接写入APK,但实践上,我们只需求在APK找到这样一个小区域,它将允许我们在不影响签名验证的状况下写入通道标识符。

美团沃乐的多渠道打包工具为什么快?APK真的有这么一个小区域,可以让我们在不影响签名验证的状况下写通道标识。美团开源开发的Android多渠道打包工具Walle就是依照这个思绪完成的。

我们都晓得APK文件实质上实践上是一个ZIP压缩文件。更改后缀后。apk到。zip,可以用压缩工具间接翻开。

Android 7.0之前的签名机制(牛轧糖)把整个APK文件分红三块:

ios移动应用程序中添加了一个马甲包 Android系统在7.0版本中引入了新的使用签名方案APK签名方案v2(牛轧糖)。新的签名方案将在地方目录块所在的文件地位前添加一个APK签名块:

ios移动应用程序中添加了一个马甲包新签名方案生成的签名信息将保管在未受维护的块2中,而块1、块3和块4都是受维护的块。签名后对block 1、block 3和block 4的任何修正都将招致签名验证失败。

既然Block 2没有维护,我们可以在这里写通道信息吗?我们来看看APK签约街区的引见:

ios移动应用程序中添加了一个马甲包 

APK签名块的外部数据构造是:2个8字节标志这个块的长度+16字节表示这个块的幻数(APK签名块42)+一组不定长的ID-value键值对数据。由新签名方案生成的签名信息以ID-value与ID(固定为0x7109871a)的键值格式存储在该块中。

让我们来看看新签名方案的签名验证逻辑:

ios移动应用程序中添加了一个马甲包

可以看出,新签名方案的验证逻辑是先找到APK签名块,然后找到ID等于APK _签名_方案_ V2 _块_ ID (0x7109871a)的键-值对,失掉签名值。不验证其他ID-值键值对。

这里可以根本理清美团多渠道打包工具Walle的任务原理:

先做一个签名的APK主包,后续的渠道包都是基于这个主包生成的;当需求打通道包时,先复制一个母包,然后依照ID-value key-value对的格式将通道标识符写入APK签名块;在装置进程中APK的签名验证进程中,我们自定义的ID-value key-value对不会被验证,所以装置和更新可以正常实行;在代码中,我们可以经过一些办法读取我们在APK签名块中自定义的ID-value键-值对,从而取得通道标识;全自动散布式多通道背心袋包装方案分享最初分享一个我们正在运用的全自动多通道背心袋包装方案。

让我们从整个系统的架构图开端:

ios移动应用程序中添加了一个马甲包

首先将需求打包的马甲包的图标icon、app称号、渠道标识等一切信息提交到Redis缓存的队列中;依据要包装的数量和每次包装所需的工夫,确定包装机的数量。比方我需求打包5000个马甲包,每个马甲包需求3分钟。假如100台机器一同打包,每3分钟可以打包100袋,完成5000袋需求150分钟。假如500台机器一同打包,每3分钟可以打包500袋,完成5000袋只需求30分钟。一切包装机挂载同一个云盘,集中存储一切APK文件;操作这么多机器是不是太费事了?其实一点都不费事。如今云主机很方便。可以选择按运用工夫付费,包完间接放就好了。

详细的包装流程图:

ios移动应用程序中添加了一个马甲包

在打包机器上启动一个方案义务,以延续接纳来自Redis的打包义务;交换源代码中的图标图标和app称号;执行gradlew命令,打包生成APK文件;经过Walle CLI命令将通道标识写入APK;将生成的频道包保管到云盘;综上所述,由于Android中签名验证机制的存在,传统的多渠道打包方案需求不时改换渠道标识,反复打包操作。显然,传统的多渠道打包方案效率低下,在渠道包数量较少的状况下,可以采用这种方式实行手工打包。

美团新一代安卓多渠道打包工具Walle,经过将自定义渠道信息写入APK签约块,完成多渠道打包。

与传统的多渠道打包方案相比,运用Walle多渠道打包工具,无论你打多少个渠道包,都只需求打包一次生成母包,然后基于母包顺次写入渠道信息,可以节省少量的反复打包工夫。

版权声明:admin 发表于 2022-10-05 20:33:55。
转载请注明:ios移动应用程序中添加了一个马甲包 | 火资源软件