热更新 Creator 3.x 原生平台热更新

使用版本:3.7.1
功能介绍:基于官方demo修改
步骤:
1.下载官方demo
https://github.com/cocos-creator/cocos-tutorial-hot-update/tree/master
2.搭建测试服务器
https://cloud.tencent.com/developer/article/1987932
开启默认端口是8080,启动的时候可以http-server -p 端口号 来修改启动端口
我的本地服务器目录结构,下面是我已经替换了最新资源的,是第7步才有这些资源


3.打开demo目录下extensions\hot-update-local-ip\builder的hook.js,修改一下代码来生成manifest文件,不然就用cocosstore里面卖的插件或者手动cmd输入命令

我的hotConfig.ts的代码就一行如下:
export const GameVersion = “1.0.0.0” //游戏版本号 (服务器)
4.修改hotupdata.ts代码,这里不做赘述,我提交到github
https://github.com/ccsuxiao/fang
5.构建,建议选择window平台,比较好测,6有说明
6.构建后assets目录下的manifest文件会自动修改,然后生成打包,打包后在build->windows->proj目录下找到test6.sln,用Visula Studio打开,看下图:加上这行代码,运行时将会有日志打印

7.改动项目,修改hotConfig的版本号,构建,构建完成后将最新资源(build->windows->assets目录下的assets和src)和manifest文件(构建自动在项目目录下->asssets的project.manifest和version.manifest)都放到服务器上
8.运行项目,如果version.manifest的版本号不同就会提示有更新

11赞

有任何问题欢迎在本贴评论,最近在了解creator的热更,欢迎一起讨论

热更过一次,搜索路径数组就会添加热更路径,本地想要再测,需要将搜索路径的热更路径删除或者删除本地存储的缓存(路径可以看hotupdate.ts里的_storagePath)

微信小游戏资源热更

6666,不错不错!

感谢分享!2.4.11使用应该问题不大吧

mark!!!

问题不大,如果是用js写,将hotupdate.ts换成js就行,hotupdate.ts主要的工作就是先创建一个asssetmanager,然后设置校验函数,版本比较函数(可写可不写,引擎中实现了一个支持 x.x.x.x 四个序列版本的对比函数),最后就是调用am的检查更新函数,发现有新版本就弹个窗提示可以更新,点击更新就调用am的更新函数,更新成功后game.restart()重启,更新失败可以重新调用downloadFailedAssets函数重新下载之前更新失败的资源。
我也最近才了解热更新,如果还不行也可以综合参考下这个,这个是2.2.2版本
https://www.bilibili.com/read/cv4626692

是TS呢!我先研究下你的这个

请教下 一个项目写完了 打包安卓 是否 只需要将 hotupdate extensions 这两个文件夹拿进来,生成下 manifest文件就好了

开始场景挂载好hotupdata.ts不报错,hook.js的服务器的地址填对,版本号每次大于之前的版本号应该就问题不大了

多谢了 我先尝试下


大佬 我都写死了 为啥自动是生成的文件 还是获取的 我删除打包新建打包 还是这样

1.你这个网址像我读GameVersion一样来读吧,因为插件的代码只在插件启用的时读一遍,其他时间不会再读了
2.

这样子自己手动生成

1赞

好的 多谢了 我尝试下删除插件什么的 要是能找到方法 再来评论

你可以把hot-update-local-ip给删了,hot-update没必要删呢,hot-update是帮你在main.js生成一段热更代码

哈哈 我昨天还想到了 修改 version_generator.js里面的 刚才打开项目 发现编译生成变了 原来只要关了项目重开 就会重新获取了 :rofl:

hot-update-local-ip是方便本地测试的,所以ip直接获取的本地,store商店倒是有每次手动读写你填的版本号和服务器地址的插件,我不会写插件,所以就要么利用官方提供的插件代码读取版本号和服务器地址或者在项目路径里用命令行生成了 :joy:

我就用的你写的那个 把这里改了下 也很方便 回头有空了 我把文件多研究下 插件用的多了 不利于理解 除非自己写的 不过不会写插件

mask11111111111111