热更新hot-update-tools-v2版本

hot-update-tools-v2

Github传送门

工具说明

  1. 首先感谢原作者贡献的开源代码,由于不太熟悉工具内的语言及其特性,现在更改后的这个版本代码逻辑上个人觉得还有很多不足,有能力的童鞋可以指正出来,不喜勿喷哈!
  2. CocosCreator热更新工具v2版本,基于CocosCreator扩展商店中的热更新工具版本中的一个小小的更改,满足目前公司项目需求,我在Mac cocosCreator1.9.3版本上是正常使用,还未发现bug
    有需要的童鞋可以下载测试,有bug以及任何问题建议等,欢迎Q我:825808091
  3. 本工具仅仅是对官方的热更新方案的一个可视化解决方案,可以帮助你快速生成project.manifest和version.manifest文件,并且提供了本地测试的一些常用操作
  4. 使用前请移步官方热更新教程 https://github.com/cocos-creator/tutorial-hot-update

应用场景和使用说明

  • 将该项目拷贝到ccc全局目录的package文件夹中,重启ccc,(安装到项目目录中的还没测试过)
  • 菜单位置: 项目 => 热更新工具
  • 使用该工具前,必须执行 项目=>构建 ,插件自身带有构建提示,仅仅作为构建参考!
  • 项目工程中必须存在manifest文件,如果是第一次使用,请使用该插件生成一份manifest文件并导入到项目中
  • 在发布平台安装包的时候,建议当前的manifest配置和当前项目的资源是吻合的,否则,可能会造成更新后的未知问题
  1. 项目native端发包时,需要发外网正式服、外网测试服、两个不同服务器的包,两个包需同时安装在手机上,且对应不同的包名、不同的热更新地址、两个服务器对应不同的版本。
    一般正式服的版本不会随便更新,都会在测试服上测试通过,再更新版本到正式服,插件这样做可以省去反复更改不同的配置问题,一来要记得不同服的版本ur和url等,二来反复更改容易单词打错等。
  2. 在插件中我将生成的manifest文件分别存放到资源目录下的:assets/resources/manifest/debug, 和assets/resources/manifest/release 两个文件夹(注意文件目录需对应为manifest/debug 和 manifest/release)
  3. 然后构建后,配置发包的新版本号、正式服url、build目录、
  4. 开始生成正式服的资源、生成完毕后在下方《当前游戏配置:正式服》,导入生成的文件到assets/resources/manifest/release目录下。
  5. 再次构建项目,配置测试服版本号、测试服url、
  6. 生成测试服的资源、生成完毕后在下方《当前游戏配置:测试服》,导入生成的文件到assets/resources/manifest/debug目录下。
  7. 这样就在项目资源内存在两个不同版本不同服务器的manifest
  8. 在热更新脚本逻辑中,通过native层获取发布的包名,根据包名判断当前的包是测试服还是正式服,去走对应的热更新逻辑。我目前是根据包名如果后缀带‘debug’字符串的则为测试服。

界面一共包含6部分,下边是具体的说明

第1部分:正式服Manifest配置

在这部分你可以看到有2个需要你填写的参数:

  • 新版本号:
游戏热更新版本号,这个版本号建议是x.x的格式,例如1.2, 2.01等
  • 正式服URL:
游戏热更新资源的服务器url,即客户端发起热更新http请求的url
例如你的服务器地址为100.200.300.400,那么这里你需要填写 http://100.200.300.400
如果你有目录层级,比如我放在了gameUpdate目录下,那么这里你就需要填写 http://100.200.300.400/gameUpdate
也就是说你最终填写的这个url+"project.manifest",能够在浏览器中正确访问,那么这个url就是有效的,不懂得请仔细查阅官方热更新文档
填写完url后,如果你服务器上有这个配置文件,会读取到你服务器上文件的版本并显示在右侧

同是你看到有2个参数是不可编辑的

  • build项目资源文件目录
如果你执行过 项目=>构建 的话,那么在插件启动时,该目录就会默认指向build/jsb-default,如果该目录下的src,res就是热更新要的文件,如果插件启动后,该参数为空,日志会提示需要你构建一下项目
  • manifest存储目录
该参数会在插件启动时默认初始化,指向的目录就是最终热更新生成的manifest文件存放处,该参数对于开发者是透明,避免参数过多,造成混淆

第2部分:测试服Manifest配置

第二部分跟第1部分其实是一样的

第3部分:当前游戏配置:正式服

  • 在这里需要构建完成,生成正式服资源后,在当前面板点击导入manifest,把对应的正式服资源导入到项目内
  • 在这个界面里更方便的查看当前项目assets资源里面的正式服版本信息
  • 项目中使用的manifest
  • package url
  • 游戏正式服的版本号

需要注意的是
如果项目中的manifest文件发生变动,该插件不会主动刷新,需要手动点击刷新按钮

第4部分:当前游戏配置:测试服

  • 同第三部分一样

第5部分:测试环境

  • 使用前请先指定本地的server物理路径

  • 部署 >>> 该操作会将生成的manifest文件,src,res,三部分文件一同拷贝到指定的server路径里

  • 清理模拟器

该操作会删除creator自带模拟器的热更新缓存
windows下为:creator\resources\cocos2d-x\simulator\win32\remote-asset
mac下为:/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/simulator/mac/Simulator.app/Contents

第6部分: 日志

  • 这里显示了一些插件的操作提示,如果使用过程中出现问题,请耐心阅读提示,也许能够得到帮助
  • 日志右侧点击‘清理’按钮,可清除当前日志。

最后

再次感谢原作者,方便了我们使用。更改该工具没有其它意思,都是为了方便自己方便有需要的童鞋,把程序能做的都考虑让程序去做。
贴上原文https://github.com/tidys/CocosCreatorPlugins/blob/master/packages/hot-update-tools/README.md

突然想起一个事,应该让生成的资源zip包,文件名对应写上是正式服还是测试服,以免混淆。

如何导出热更新资源

有2种方式:

  • 1.插件的部署操作里面,你可以指定一个目录,该操作会将热更新的所有资源放到那个目录里面,你可以手动压缩这里的文件.
  • 2.插件在执行生成操作的时候,会在 项目目录/packVersion/ 下生成一个包含版本号的zip包,比如:ver_1.1.zip, 这个压缩文件就是你需要的热更新资源包

插件能否支持lua?

好多小伙伴问我这个问题,其实这个插件仅仅是对项目资源进行了一次md5,并没有引入热更新的逻辑代码,所以这个插件应该是适合所有游戏热更新方案的,因为热更新原理其实就是比对本地和远程的资源是否一致,不一致进行一次同步

16赞

:joy:666666

mark一个

mark一个

马克啊

好工具,必须得赞。

:clap:感谢分享~

看起来不错,很油很亮

mark一下,楼主同道,分享一个小点子,我也搞了一个给我们组用,当时我们组有一个需求就是放到正式服务器的热更包和测试服务器的热更包要完全一致。所以我请求一个固定内网的配置,如果这个配置说明使用测试服务,则记录下来,热更的时候使用测试服务器替换正式服务器的地址。这样热更包就没有测试和正式之分了。

这个厉害了,哥

这里想到一个问题,外网的版本有的只是热更小版本,大版本通过迭代,例如新加入其它子游戏或者子模块,一般会在测试服进行测试n个版本,再推送到正式服给玩家,这种情况你们是什么样的方案呢,可以借鉴一下吗

2.0.2能使用吗

mark

mark

2.0以上版本还没测试过,我们项目是在1.9.3上开发的,暂时不敢升级到2.0,你可以试一下,有问题再来修复吧

厉害了

mark……

mark
:+1:

mark