关于原生热更新的问题

  • 目标平台:andorid ios
    项目采用全bundle的热更形式 代码和资源都是基于Bundle形式热更新。发现引擎打包会将npm的依赖打包到src\chunks\bundle.xxx.js里面。然后又将代码合并了。并且修改了Bundle代码中对npm外部代码的引用。比如bundle原来引用的是a.js 打包后变成了引用index.js->包含了a.js这个是src\chunks\bundle.xxx.js重新定义的。 但是热更bundle本身是不会热更底包src\chunks\bundle.xxx.js的。导致但凡NPM有点什么改变(例如删除了一个外部依赖)。打包后的src\chunks\bundle.xxx.js变成了index3.js引用->a.js 然后bundle代码中引用也变成了引用index3.js 导致热更下来的bundle代码根本找不到index3.js。

一个热更包,可以像你那样子,只包含一个 AssetBundle

但是这是有短板的,就像你现在这样子,没法包含额外的文件,导致没法热更新到

所以你应该重新定义你的热更包,让他可以包含自定义的内容

比如:

  • 主热更包包括 src/
  • 子热更包包括 1个 bundle
  • 子热更包包括 N个 bundle
  • 子热更包包括 任意内容

如果是用我的插件的话,就是这个思想

https://www.yuque.com/dhunterstudio/gg/hot-update#MlB5T

比如: src/ 一般可以在主包中包含这一块

{
  "build-in": {
    "files": [
      "src/",
      "jsb-adapter/",
      "assets/internal/",
      "assets/main/",
      "assets/resources/",
      "assets/bundle-game-a/"
    ]
  }
}

我主包必须勾选MD5。这个插件不支持吧。

不支持,不想支持,不要买,按照差不多思想,改造一下你的就好~

嗯嗯。大概思路有了。谢谢