游戏母包如何解决方法数超限

QuickSDK | 2023-04-25 | 技术干货

起因

Android系统中,一个Dex文件中存储方法id用的是short类型数据,所以导致你的dex中方法不能超过65k。由于CP 母包集成过多SDK,或者渠道SDK方法数过多时,两项合并就可能导致渠道包方法数超过65K的限制。

具体表现

当打包失败日志中出现这句话时,表示渠道包方法数超限。



母包处理方法

将母包拆分成多个dex,使用工具前,请在电脑上安装JDK,详情百度安装


1.首先将母包移动到反编译脚本或者反编译工具中切记不是双击脚本运行),反编译得到以下文件夹列表,在此文件目录下,新建一个smali_classes2/com文件夹路径;

2.进入smali/com文件夹,将里面的部分代码文件夹剪切移动到刚刚新建的smali_classes2/com 路径下(注意quicksdk相关的文件夹,以及游戏Application启动相关的文件夹不能移动,比如Application的路径 以及 Application中调用了某些sdk的接口)

3.修改母包信息,反编译母包之后,如果游戏想修改游戏母包的targetVersion或者游戏版本号(名),可打开外层文件夹的apktool.yml这个文件修改;


4.回编译母包,回编译脚本执行完成之后,会在同路径下生成dist文件夹,回编译生成的包就在里面



注意事项:

1. 除了com下,别的文件也可以移动,只要保证游戏application及其父类、QuickSDK的代码,以及闪屏在smali下即可

2. 可以创建多个smali_classesX文件夹,如smali_classes2   smali_classes3   smali_classes4  ...最好是把母包的大部分方法移动到smali_classes3及以后的文件夹内
3. 任何调用了qk的方法,接口的类也只能放在smali下, 不能分qk的方法

附:



反编译脚本工具下载:

https://pan.baidu.com/s/19FVc_e_asEO8IZxrlUHtWQ  提取码: mmp8


反编译工具使用可参考文档

如何使用反编译工具



商务合作

李先生:13880511661

QQ:48157910

市场合作

郭女士:18349260870

QQ:1077535763

技术支持

孙女士:13551010407

QQ:1799614139

官方技术交流群

QQ群:698731538