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

QuickSDK | 2020-04-15 | 技术干货

起因

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

具体表现

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

母包处理方法

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


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

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

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

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

附:


反编译脚本工具下载:

https://pan.baidu.com/s/1rtFBi85nES7WSSweTaS8Yw 提取码:q54s


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

如何使用反编译工具



商务合作

李先生:13880511661

市场合作

赵先生:15390049857

技术支持

彭女士:18202818615

官方技术交流群

QQ群:698731538