LayaBox热更新问题

    技术2022-07-12  82

    最近项目出现一个热更新的问题,特此在这记录一下踩过的坑。 项目环境: LayaBox 1.8.5,Native v1.0.5,使用layadcc更新机制 问题描述: 项目原本在ios上有一个正常的版本在运行了,期间的热更新是没有任何问题的。后面又提审了一个版本,在这ios审核的期间,又热更了一些新的内容。审核通过之后,不去appstore主动更新是没问题的(提审只是换了图标),问题就在于,主动去appstore更新之后,新包的资源和代码会覆盖掉原来的,打开游戏就不再会热更,除非后端再有新的内容更新。 寻找问题: 在ios工程index.js文件里面,有个updateDcc方法。不难发现,整个资源包的校验码assetsid在提审期间热更之后,已经是最新的了,重新下载新包,assetsid并不会改变,所以新包直接就跳过热更了。 解决问题: 直接跳过判断校验码assetsid,每次都去下载dcc主文件filetable.bin,这样每次都能取到最新的资源和代码的校验值了。(直接屏蔽掉updateDcc方法case2的判断即可)

    ```case 2: //if (!(curassets != assetsidStr)) return [3, 7]; log('need update;'); txtdcc = ''; return [4, asyncs.downloadSync(urlpath + 'update/filetable.bin?' + assetsidStr, true, null)];
    Processed: 0.018, SQL: 9