3.8.0 自动图集 剔除未使用的图片功能异常

image
在bundle文件夹下创建auto-atlas文件后,勾选上图所示四个选项,选择微信小游戏平台打包后,出现两个问题:

  1. 散图依然存在,并没有被正确剔除;
  2. bundle加载时报错。

引擎版本 :3.8.0

bundle加载异常信息
image

bundle加载问题定位

  • 报错位置,bundle初始化config的versions时找不到对应的assetInfo
    image

  • 比对勾选与未勾选两个版本的导出信息(config.json):
    paths字段下的小图资源在勾选后已被移除,没有记录;
    image
    versions.native下勾选时依然存在有小图的版本信息,但对应的uuid变成了null。
    image

目前未修改源码做尝试,但根据代码推断,是由于传入的uuid是null,所以找不到对应的assetInfo导致的bundle初始化异常。

试试 383

目前的项目比较臃肿,时间有限,所以暂时没法升级去踩新坑,目前正在尝试清除缓存重新构建,看能不能解决 :joy:

基于3.8.0的解决方案
在执行cocos构建指令后(我们项目使用的命令行构建),增加后处理:

  • 读取bundle下的config.json文件,遍历versions.native移除null项及其版本;
  • 收集native文件夹下所有文件,与config.json文件中的uuids列表对比,删除不存在于列表中的文件。

缺点
构建时指定md5Cache缓存选项时,config.json文件会带有一个md5版本号,修改完内容后,如果按文件内容去计算md5会与原值不一致。如果需要使用该版本号校验文件完整性会有问题。