热更新
原理
对比本地和远程 Manifest 文件,来确定更新内容
manifest 内容
远程资源包的跟路径
远程 manifest 文件地址,可能比较大,用 version 文件先确定是否需要比较
远程 version 文件地址,先比较此,若不同,再比较 manifest
主版本号
文件列表,一般用文件 md5 作为版本呢好
搜索路径列表,本地已下载内容路径
更新内容
src 目录,包括引擎脚本
assets 目录,其他 assets 资源
热更流程
生成原版本地 manifest 文件
制作热更组件处理更新逻辑
发布后,若有变动
生成新的资源,包括 assets 目录、src 目录、manifest 文件
将新内容部署到服务端
热更组件检测到服务端 manifest 版本不一致时,开始热更
Demo
组件
HotUpdate.ts 脚本
Hook 插件
每次构建完成会自动调用
version_generator
脚本,生成新的manifest
文件需要修改
hot-update-local-ip/builder/hook.js
的onAfterBuild
方法,修改服务器地址
Version_generator.js 脚本
nodejs 脚本
cmd:
node version_generator.js -v 1.0.0 -u http://your-server-address/tutorial-hot-update/remote-assets/ -s native/package/ -d assets/
热更新操作
基础版本
游戏制作……
修改
Hook
插件的版本号,为当前基础版本号,如1.0.0
修改
Hook
插件的服务器地址Build
热更新版本
游戏做了一些改动
修改
Hook
插件版本号,递增修改版本号,如1.0.1
Build
拷贝构建资源到服务器中,如
build/android/data/
,与manifest
一致拷贝
project.manifest
和version.manifest
文件到服务器中,与manifest
一致启动游戏,开始热更
做了一些改动
把 HotUpdate 脚本实现一下
在 login 中实现热更流程,在登录和防沉迷之后
修改插件,方便管理版本号和服务器地址
修改插件或新建脚本,方便拷贝文件
自用组件
修改 Hook.js 的链接和版本号即可
对于 aar 没有影响