在微信小游戏用zip的bundle不会清理旧的吗?

如题所示,微信小游戏使用了zip压缩的bundle,看文档是可以自动缓存bundle的
image
看着多次发版后,bundle的压缩包已经把store塞满了,导致解压出错,引擎不会自动删除旧版本的bundle吗?
不过我的用法有点不一样,版本号是传进去的。
或者我如何清理旧bundle包?

https://developers.weixin.qq.com/minigame/dev/api/file/FileSystemManager.removeSavedFile.html
https://docs.cocos.com/creator/manual/zh/editor/publish/publish-wechatgame.html?h=微信
参考这个

可以试试这个方式:
const cachedFiles = assetManager.cacheManager?.cachedFiles as any;
if (cachedFiles) {
const bundleName: string = ‘要删除的bundle名字’;
const map = cachedFiles._map;
const keys = Object.keys(map);
let jsonFileUrl: string | null = null;
let zipFileUrl: string | null = null;
for (let i = 0, len = keys.length; i < len; i++) {
const cacheFileName = keys[i];
if (cacheFileName.includes(bundleName)) {
if (cacheFileName.includes(’.json’)) {
jsonFileUrl = cacheFileName;
} else if (cacheFileName.includes(’.zip’)) {
zipFileUrl = cacheFileName;
}
if (jsonFileUrl && zipFileUrl) {
assetManager.cacheManager!.removeCache(jsonFileUrl);
assetManager.cacheManager!.removeCache(zipFileUrl);
break;
}
}
}
}
在cache.json里面bundle的映射是这样的形式:
{
“files”:
{
“http:///remote/bundle名字/res.ede96.zip":
{
“bundle”: “bundle名字”,
“url”: “user://user/gamecaches/bundle名字/16832910511720”,
“lastTime”: “1683291051172”
},
"http://
/remote/bundle名字/config.ad806.json”:
{
“bundle”: “bundle名字”,
“url”: “user://user/gamecaches/bundle名字/16832910513521.json”,
“lastTime”: “1683291051352”
}
},
“version”: “1.0”
}
原理就是通过资源缓存json找到相对应的映射,然后通过key去删除;
注意:这个是Zip形式的bundle;

重新贴一下

const cachedFiles = assetManager.cacheManager?.cachedFiles as any;
if (cachedFiles) {
    const bundleName: string = '要删除的bundle名字';
    const map = cachedFiles._map;
    const keys = Object.keys(map);
    let jsonFileUrl: string | null = null;
    let zipFileUrl: string | null = null;
    for (let i = 0, len = keys.length; i < len; i++) {
        const cacheFileName = keys[i];
        if (cacheFileName.includes(bundleName)) {
            if (cacheFileName.includes('.json')) {
                jsonFileUrl = cacheFileName;
            } else if (cacheFileName.includes('.zip')) {
                zipFileUrl = cacheFileName;
            }
            if (jsonFileUrl && zipFileUrl) {
                assetManager.cacheManager!.removeCache(jsonFileUrl);
                assetManager.cacheManager!.removeCache(zipFileUrl);
                break;
            }
        }
    }
}
{
    "files":
    {
        "http://***********************/remote/bundle名字/res.ede96.zip":
        {
            "bundle": "bundle名字",
            "url": "user://user/gamecaches/bundle名字/16832910511720",
            "lastTime": "1683291051172"
        },
        "http://***********************/remote/bundle名字/config.ad806.json":
        {
            "bundle": "bundle名字",
            "url": "user://user/gamecaches/bundle名字/16832910513521.json",
            "lastTime": "1683291051352"
        }
    },
    "version": "1.0"
}

谢谢回复,很久前的问题了,其实要处理我也可以用wx的API处理的,主要是了解一下ccc会不会自动处理过期文件

你好 请问解决了吗?

建议微信小游戏不要用zip的bundle,storage 不是zip塞满就是其他东西塞满,cache清理机制也会丢文件。
能直接下散文件就直接下散文件吧,不会出错。