官方文档
1. 热更新是用来干啥的
当你下载一个游戏,打开时发现提示有新的资源包要让你更新,那就是使用了热更新
热更新主要是用于原生环境的andriod和ios,对于小游戏不用,小游戏是审核过后,打开原来的小游戏马上就会更新,而安装包 .apk/.ipa已经是安装在手机上了。如果不把原来的游戏卸载,再去下载更新过的游戏,那么是玩不到更新过的游戏,一直是老版本。
而热更新就是玩家不用去下载新版本,直接更新资源包就能更新这个游戏,当你将这个游戏(应用包)的所有数据清空后,你发现这个游戏又变成了老版本。
所以经过热更新后·是把有变化的资源存在缓存中,游戏中使用的资源,优先是使用搜索到缓存中的资源。
2. 需要环境
正式项目肯定是不用本地服务器的,也就不需要夜神模拟器和anywhere
- 使用本地服务器 全局安装 anywhere ,可以在任何文件夹下启动本地服务
npm intall anywhere -g
- 需要AndriodStudio 开发环境(生成apk包)
- 夜神模拟器 (夜神模拟器可以连接到本地服务器)
!注意
使用CDN服务器,会存在缓存的情况,每次有版本更新需要重新建一个目录将资源放进去,如果在旧的目录下,把资源上传上去,直接通过url访问 version.manifest文件,发现这个version.manifest文件还是旧版本的
3.下载官方demo
4. 新建creater3.0工程
-
生成version.manifest和project.manifest文件在assets下
将官方热更新的demo中的version_generator.js
拷入进来,这个文件主要是用于生成 version.manifest和project.manifest文件,这个两个文件主要是用来进行版本对比的,
在更新之前需要找到本地的manifest文件,从这个文件的信息找到远程资源的url,比较本地和远程的version.manifest文件,如果远程的比本地的版本高,就要下载远程的资源包。 -
将这个project.manifest 文件拖入热更新组件中
-
在项目工程之外,新建一个文件夹server,在此文件夹下起本地服务(运行anywhere 就能启动本地服务)
-
将官方demo的扩展插件extentions文件夹拷入项目工程
然后重启项目工程,在Creater编辑器顶部 扩展/扩展管理器/项目,发现有hot-update插件,说明插件导入成功,这个插件hot-update主要是在构建后项目的main.js中前面加上一段代码,用来启用新资源的,就是如果没有加这段代码,新资源下载好了,但是还是会使用应用包内的资源,不会用到下载到缓存中的新资源
5.构建项目,AndriodStuido打包apk,将project.manifest ,version.manifest和build/andriod下的assets文件和arc文件,放到起本地服务器的文件夹server/hotUpdate下,按照你自己规定的路径
我的路径是server/hotUpdate,server文件夹不要建在项目文件夹内,建在外面,然后在这个文件夹下启动本地服务(就是在终端运行 anywhere命令,运行anywhere命令的路径是 server)
- 后面出新包只需要生成新的version.manifest和project.manifest文件,在构建一下,把assets和src,放到本地服务器上(server/hotUpdate)。在夜神模拟器上,检查更新就会发现有新版本需要更新
- 经过我的测试,版本号相差小,容易更新失败,例如version A 10.0.0 ,versionB是10.0.1,直接改第一位都是成功的