游戏在发行过程中,常常遇到多渠道包的问题,为游戏开发者带来许多困扰。下面将对多渠道打包的几种实现方式进行梳理,并描述本平台对此提供的解决方案。

关于多渠道问题,了解一下

如果你的游戏存在许多个渠道包,那么你可能有如下困扰:

  1. 我的游戏有100个渠道包,每个包都需要单独加固吗?

  2. 我的游戏有100个渠道包,每个包名都要在控制台配置吗?

  3. 我先对游戏母包进行加固,然后打出的各个渠道包不能正常运行,怎么办? ……

在游戏加固时,面对动辄几十个、上百个渠道包的情况,最简单的方法是为每个游戏包进行单独加固,但是这样却需要花费大量的时间和人力消耗。
我们希望只对游戏母包进行一次加固,然后打出的各个渠道包就既可以正常运行,又可以得到加固保护。那么这种方法可行吗?
打多渠道包时,第三方打渠道包工具的处理方式有多种,我们逐一梳理,你只需按照对应的情况选择对应的方案即可。

打多渠道包时的场景分类

场景分类一:渠道包只修改游戏的资源文件

这是最常见的情况,这种情况下第三方工具在生成渠道包时,只修改游戏的某些资源文件,不对其它核心逻辑模块进行修改,可参考处理方案二进行解决

场景分类二:渠道包只修改某个block可识别字段

渠道包只在游戏zip包的末尾修改一个block字段,用来标识渠道包(见图1),这种情况不对游戏包内的逻辑模块和资源文件进行任何修改,所以与加固方案没有冲突。可参考处理方案三进行解决

图1:渠道包只修改block字段的示例

场景分类三:渠道包会修改dex的application入口

渠道包会修改application入口以获得第一启动时机,这种修改方式与加固方案存在冲突,影响加固方案的启动。可参考处理方案一进行解决

场景分类四:渠道包只修改AndroidMainfest.xml文件

渠道包会修改AndroidManifest.xml文件,在该文件的Application中增加Metadata标签,用于记录渠道号从而可以直接从packagemanager中获取渠道信息,由于最新版加固版本已对该修改进行兼容,所以与加固方案没有冲突,可参考处理方案三进行解决

场景分类五:渠道包会在META-INF目录新增文件

直接解压缩母apk包,在META-INF目录中增加一个新文件,用于记录渠道号,生成新渠道包,这种情况不对游戏包内的逻辑模块和资源文件进行任何修改,所以与加固方案没有冲突,可参考处理方案三进行解决

场景分类六:母包会新增记录渠道号channel.txt文件

打包时直接在apk包中添加一个channel.txt文件,生成渠道包时解包修改该文件,记录渠道号,生成新渠道包,这种情况不对游戏包内的逻辑模块和资源文件进行任何修改,所以与加固方案没有冲突,但需要确保加固时将channel.txt文件从配置文件的校验范围内剔除,可参考处理方案二进行解决

场景分类七:渠道包会修改package name

在打包时修改package name,使不同渠道包使用不同的包名,统计时直接按照包名统计渠道数据。这种修改方式与加固方案存在冲突,影响加固方案的启动。可参考处理方案一进行解决

场景分类八:会在渠道签名时插入渠道数据

对母apk包签名时插入渠道数据信息,将渠道数据插入APK Signature Scheme v2 的可选拓展节区。这种情况不对游戏包内的逻辑模块和资源文件进行任何修改,所以与加固方案没有冲突,可参考处理方案三进行解决,但是需要注意的是母包加固时需使用v2签名才可以。

打多渠道包时的解决方法

处理方案一:先生成渠道包,再对各渠道包进行批量加固处理

图2:对母包加固的操作步骤

处理方案二:先过滤文件,然后对母包进行加固

加固时提供了选择资源文件保护范围的功能

图3:在加固前,勾选掉不想要校验的资源文件

这种处理方法的操作步骤很简单,操作步骤如图4所示。

图4:缩小资源保护范围的操作步骤

处理方案三:对母包进行加固,默认全部校验

这种情况下只需要一次加固即可。如图5所示,首先对游戏母包加固,然后用加固后的母包生成渠道包,不需要再对渠道包进行特殊处理,验证包的稳定性之后就可以正常发布。

图5:加固渠道包操作步骤

总结

我们在遇到多渠道问题时,只需要分清楚属于哪种场景,然后选择对应的方法即可。 因此,项目组在加固前,需要需要明确多渠道过程中会涉及包内哪些文件的修改(只新增文件与加固方案不冲突),根据经验,大体分为3类:

第一类:多渠道过程中不涉及任何文件的修改,采取处理方案三——对母包进行加固,默认全部校验;

第二类:多渠道过程中涉及资源文件修改,但不涉及dex、so文件的修改,采取处理方案二——先过滤文件,然后对母包进行加固;

第三类:多渠道过程中涉及到dex、so文件的修改,采取处理方案一——先生成渠道包,再对各渠道包进行批量加固处理;

Q.E.D.

  • reword 您的打赏,就是俺创作的动力