现状
如果有打远程包的,会发现打完远程包后,将会有一个对应文件夹在bundle-scripts下面,即使远程包没有代码也会生成该文件,每个文件大概4KB,如果远程包数量不多,倒也没关系,但是如果远程包数量过多或者远程包里面有代码,那这个大小可能超过1mb,加上引擎可能就超过了4MB的限制,下面给出一种最简单的方式处理该问题。
处理方式
在不改动引擎的前提下,
第一种方式是如果是因为远程包有代码,但建议将代码单独分包,这种需要稍微修改下项目结构,自行处理即可。
第二中方式是如果远程包是因为多或者确实不方便挪动代码,那么我们可以考将代码进行小游戏分包,其实这个也很简单,下面说下步骤
- 在game.json里面添加这个文件做为分包
{
// ...
"subpackages": [
// ...
{
"name":"分包名",
"root":"src/bundle-scripts/"
}
]
// ...
}
- 小游戏分包,要求必须有一个game.js的入口文件,因此在目录
src/bundle-scripts/下创建一个空的game.js文件 - 在第一次加载远程分包前,先加载该分包
一些优化
- 可以考虑进行预加载
- 如果是某个远程分包的代码比较多,可以更细致的分包
做成插件
本来想做成插件上商店,顺便赚点外快的,但是审核人员觉得我的质量不高

既然质量不高,就顺便直接提供下载吧
optimize-remote-bundle-scripts.zip (6.0 KB)
使用方式
在构建面板(目前支持微信小游戏和抖音小游戏),选择模式
- 不处理,就相当于没有开启该插件
- 自动加载,表示在引擎处理化时先加载该分包,适用于分包不大或一进游戏就要加载远程分包的情况
- 手动加载,表示自己在第一次加载远程分包前,加载该分包
PS: 无论是安卓还是iOS,起步阶段都是野蛮生长,CocosStore里面插件数量少、同质化高,一开始就高要求,不知道好不好,当然这不是我该考虑的事,而且这里的审核意见我都认可,因为这个插件太简单了,花哨的外观也掩盖不了这个插件就只做了三步处理。
PS2: 我觉得这种功能,引擎处理是更好的,比如应该区分远程包是否有代码,进行差异化处理,允许设置该文件夹的分包类型等。
PS3: 如果自定义了引擎,引擎比较大,可以考虑另外一个插件,该插件把引擎也分包了(如果引擎没有自定义,建议不要使用该方案),Cocos Store
PS4: 私人赞赏,非常欢迎 
