本文将会具体解说cocos2d-js下的热更新机制。这篇内容先给大家介绍一下两个manifest文件就当热身了。

首先介绍project.manifest:  举个样例

{

"packageUrl" : "http://192.168.1.108/games/dragon_gold",

"remoteManifestUrl" : "http://192.168.1.108/games/dragon_gold/project.manifest",

"remoteVersionUrl" : "http://192.168.1.108/games/dragon_gold/version.manifest",

"version" : "1.0.2",

"groupVersions" : {

        "1" : "1.0.1",

"2" : "1.0.2"

    },

"engineVersion" : "3.6",

"assets" : {

        "update1" : {

            "path" : "dragon_gold1.zip",

            "md5" : "140caaa2a4508912424e807a941bf71",

            "compressed" : true,

            "group" : "1"

        },



"update2" : {

            "path" : "dragon_gold2.zip",

            "md5" : "140caaa2a4508912424e807a941bf7bc",

            "compressed" : true,

            "group" : "2"

        }

      },

      "searchPaths" : [

         ]

}

  • packageUrl :  远程资源的下载根路径。 (它是为“dragon_gold1.zip”服务的。没了这个根路径我们都找不到要下载的包)
  • remoteVersionUrl :远程版本号文件的路径,用来推断server端是否有新版本号的资源。
  • remoteManifestUrl :远程配置文件的路径,包括版本号信息以及全部资源信息。
  • version : 配置文件相应的版本号。

    (这个用来推断是否有新的更新包)

  • assets :这个比較重要:里面的value就是相应要更新的包,当中path是更新包的包名。md5:当在下次更新时用来比較这次与上次下载下来的manifest文件里相应的包的md5 码是否同样,不同的话须要做些处理(更新。删除操作)。

    compressed是用来决定下载下来的包是否须要解压。

    group是重中之重。它是用来实现增量跟新的。它的值与groupVersions相相应。

举个样例:有这么两个用户,第一个用户下载app之后一直没玩。第二个用户一直在玩每次有更新时第二个用户都会跟着更新,如今第二个用户当前的version为1.0.1时。他会去更新update2这个包,可是第一个用户一直没玩所以他的更新包version是1.0.0。这时他须要去更新update1和update2这两个包,
这就是一个简单的实现增量更新的样例。
(备注:当时用2.x版本号引擎没提供这个功能。自己做了个增量更新功能坑了一段时间,如今引擎已经提供这个功能方便多了)。

我一直再讲project.manifest这个文件却没有说version.manifest,它事实上是个简化版 的project.manifest。当我们版本号已经有了几十个甚至几百个更新包时。显然下载project.manifest来推断是否有无更新是不明智的(由于更新包越多project.manifest体积变得越大。对于手机这么贵的流量下载这么大的东西是不划算的),因此此时的version.manifest用处就明显了,不管project.manifest体积多大,它永远仅仅须要这么几行代码就能够了:

{

"packageUrl" : "http://192.168.1.108/games/dragon_gold",

"remoteManifestUrl" : "http://192.168.1.108/games/dragon_gold/project.manifest",

"remoteVersionUrl" : "http://192.168.1.108/games/dragon_gold/version.manifest",

"version" : "1.0.2",

"groupVersions" : {

        "1" : "1.0.1",

"2" : "1.0.2"
...

    }

}

这一节就讲到这。下次開始用我眼下做的一个项目来具体解说热更新的使用方法。(备注:这一节是用工作时间写的。有点马虎了.......)

cocos2d-js 热更新具体解释(一)的更多相关文章

  1. Cocos2d-js 热更新学习笔记

    转载至: http://blog.csdn.net/pt_xxj/article/details/68927705 为什么还要再写一篇关于cocos2d js热更新的笔记,最单纯的想法就是记录心得,另 ...

  2. webpack开启本地服务器与热更新

    第一个webpack本地服务 webpack本地服务相关的一些操作指令与应用 一.第一个webpack本地服务 //工作区间 src//文件夹 index.js//入口文件 index.css//测试 ...

  3. cocos2dx js 3.2 热更新

    COCOS IDE用手机调试更新是正常的,是预想的结果,但用COCOS IDE打包发布APK,安装到手机上,热更新下载图片.JSON UI什么的都能正常更新替换,但JS脚本没有替换,这是为毛.更新文件 ...

  4. Node.Js的热更新服务——supervisor

    因为目前项目每次修改文件要看效果,必须重启服务:node app.js再进入浏览器看效果,很是麻烦.所幸的是有很多第三方的管理工具(supervisor,hotnode,forever,pm2等),当 ...

  5. 监听 Markdown 文件并热更新 Next.js 页面

    Next.js 提供了 Fast-Refresh 能力,它可以为您对 React 组件所做的编辑提供即时反馈. 但是,当你通过 Markdown 文件提供网站内容时,由于 Markdown 不是 Re ...

  6. ReactNative 使用微软的CodePush进行热更新,继续填坑

    1.别被开发环境骗了 在我们开发react native的时候,一键运行工程,js改了,只要cmd+R就可以刷新了.然后会轻易以为真正app上线的时候也是一样,只要app一打开就是最新的. 其实!这是 ...

  7. IOS热更新-JSPatch实现原理+Patch现场恢复

    关于HotfixPatch 在IOS开发领域,由于Apple严格的审核标准和低效率,IOS应用的发版速度极慢,稍微大型的app发版基本上都在一个月以上,所以代码热更新(HotfixPatch)对于IO ...

  8. RN学习1——前奏,app插件化和热更新的探索

    react_native_banner-min.png React Native(以下简称RN)有大量前端开发者的追捧.前端开发是一个活跃的社区,一直尝试着一统前后端,做一个全栈开发,RN就是他们在客 ...

  9. [Cocos2d-x]Lua 资源热更新

    什么是热更新 所谓的热更新,指的是客户端的更新. 大致的流程是,客户端在启动后访问更新的URL接口,根据更新接口的反馈,下载更新资源,然后使用新的资源启动客户端,或者直接使用新资源不重启客户端. 热更 ...

随机推荐

  1. servlet3.0理解

    1.servlet是用Java编写的服务器端程序,服务器端程序,服务器端程序. 2.Servlet运行于支持Java的应用服务器中.spring mvc有自己的实现servlet 从原理上讲,Serv ...

  2. Ubuntu16.04编译cmake源码

    编译版本:cmake-3.8.0-rc2 为了能够编译出ccmake和cmake-gui,首先需要安装libncurses5-dev sudo apt install libncurses5-dev ...

  3. android 分享到QQ空间的全部操作

    http://wiki.open.qq.com/wiki/mobile/SDK下载   <!-- QZone分享必须加上以下两个activity -->                &l ...

  4. 英语发音规则---H字母

    英语发音规则---H字母 一.总结 一句话总结: 1.H发[h]音? hot [hɒt] adj. 热的 house [haʊs] n. 住宅 head [hed] n. 头:头痛 hat [hæt] ...

  5. php实现简单的学生管理系统

    php实现学生管理系统 一.效果 二.代码框架 functions文件夹里面是封装的mysqli的数据库操作函数和一个跳转的函数 student文件夹里面就是学生管理系统的主界面 applicatio ...

  6. DB-MySQL:MySQL 序列使用

    ylbtech-DB-MySQL:MySQL 序列使用 1.返回顶部 1. MySQL 序列使用 MySQL 序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想 ...

  7. Burnside&Polya总结

    这里就算是一个小总结吧- 附参考的网址: http://blog.sina.com.cn/s/blog_6a46cc3f0100s2qf.html http://www.cnblogs.com/han ...

  8. POJ 2771 最大独立集 匈牙利算法

    (为什么最大独立集的背景都是严打搞对象的( _ _)ノ|壁) 思路:匈牙利算法 没什么可说的-- // by SiriusRen #include <cstdio> #include &l ...

  9. 实现SSRS订阅

    以前曾经搞过SSRS的订阅,使用的是公司的邮件服务器,最近QQ群中有妹子问到同样的问题,虽然没能帮人家搞定,下面写出自己参考的资料,以供各位参考: 一.订阅前准备工作(转载自http://blog.s ...

  10. 备份IIS

    备份IIS,这里实质指的是备份IIS配置.如果要备份IIS部署的网站的话,直接Copy目录就行了. 备份IIS配置其实和备份系统含义差不多,为了方便系统或者IIS出现故障后能够及时恢复到某节点上,所以 ...