在日常开发中,最令人头痛的不是功能bug,而是资源更新: 改了个图标,要让全服生效? 加了新皮肤,客户端怎么不用重新下载包? 想接入CDN自动更新,结果资源路径乱套?
别慌,这篇就是为了解决这些痛点。我们来拆解 工具/ 目录里隐藏的“热更新能力”和“版本控制逻辑”。 一、目录结构总览(工具相关)源码中的 工具/ 目录结构如下:
工具/
├── cdn/ # 生成的热更资源包目录
├── 发布update/ # 版本号生成、更新脚本目录
│ ├── version.json # 当前资源版本信息
│ ├── version_generator.js # 热更核心脚本
│ ├── manifest_generator.js # manifest配置生成器(部分版本)
│ └── 上传.bat # 一键上传脚本(需配置)
├── PC端可用库/ # 客户端联调依赖
└── README.md # 工具说明文档
工具截图
二、核心工具:version_generator.js✅ 作用是什么?简单来说,这个脚本会扫描你前端资源目录(如 res/ 和 src/),为每一个文件生成: 然后写进一个名为 version.json 的文件里。 前端项目(尤其是 Cocos2d-JS)在启动时会读取 version.json,判断哪些资源需要从 CDN 拉最新的,哪些可以用缓存。 📌 示例结构(version.json):
{
"res/logo.png": "a8cf4...123a",
"res/bg.jpg": "9e9ab...48bc",
"src/game.js": "29fbc...ccce"
}
每次更新资源后重新生成 version.json,前端启动时对比 hash 值来决定是否热更。 三、资源更新流程建议💡 推荐使用流程: 四、CDN 接入说明✅ 热更依赖两类 manifest 文件:project.manifest version.manifest
部分版本使用 manifest_generator.js 来生成这两份配置。 内容包括:
{
"packageUrl": "http://cdn.example.com/update/",
"remoteManifestUrl": "http://cdn.example.com/update/project.manifest",
"remoteVersionUrl": "http://cdn.example.com/update/version.manifest",
"version": "1.0.7",
"assets": {
"res/bg.jpg": {
"md5": "9a88cd...",
"size": 10240
}
}
}
CDN文件
🔧 配置路径位置:你需要在前端项目(如 client/main.js)或 TestConfig.js 中,手动指定 manifest 的远程路径。
var updateUrl = "http://cdn.example.com/update/";
五、上传脚本说明部分目录中有内置的 上传.bat 文件(或上传到七牛、阿里云OSS的脚本),你可以: 配置自己的 CDN 密钥 一键上传 cdn/ 中资源目录 搭配版本号打标进行灰度或全量推送
六、常见问题与踩坑提示问题 | 可能原因 | 解决建议 | 启动报“资源md5不一致” | 本地 version.json 未更新 | 修改资源后记得重跑生成器 | 热更新失败跳过资源 | manifest 路径写错 | 确认路径是否 http/https 一致 | 客户端缓存旧资源 | 本地缓存未清理 | 可调试阶段清空 localStorage 或版本号强制刷新 | 安卓 App 不更新资源 | 未集成 manifest 热更逻辑 | 确认客户端是否支持 AssetManager |
七、你可以做的拓展操作 八、小结相比传统“整包更新”的方式,这套热更工具更适合快速开发与版本迭代高频的项目,尤其是: 需要频繁调整UI/资源 面向多个运营地区、多个皮肤版本 希望降低用户重新下载成本
只要你正确使用 version_generator.js 并配置好 CDN 路径,资源更新就像发微信一样简单。
|