本文将会具体解说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. spring boot不同环境读取不同配置

    具体做法: 不同环境的配置设置一个配置文件,例如:dev环境下的配置配置在application-dev.properties中:prod环境下的配置配置在application-prod.prope ...

  2. 路由器一键桥接Android实现

    開始之前,首先说一下什么叫一键桥接,所谓一键桥接,就是点击一下.就能够对所连接的路由器进行网络中继设置.以实现路由器能够通过已有的无线路由器进行网络訪问. 那么实现这个功能有几种方法呢?能够说有非常多 ...

  3. 因一段JavaScript代码引发的闲扯

    前两天,一朋友给我发了一段JavaScript代码: function f1(){ var n=999; nAdd=function(){ n+=1 }; function f2(){ alert(n ...

  4. mysql基础综述(四)

    1.数据库的简单介绍 1.1 数据库,就是一个文件系统,使用标准sql对数据库进行操作 1.2 常见的数据库 oracle  是oracle公司的数据库,是一个收费的大型的数据库 DB2,是IBM公司 ...

  5. PHP别名引用错误:“The use statement with non-compound name … has no effect”

    别名概述 PHP5.3+支持命名空间:namespace,命名空间的一个重要功能是能够使用别名(alias)来引用一个符合规则的名字. 命名空间支持3中形式的别名引用(或称之为引入)方式:类(clas ...

  6. c语言循环案例

    do while #include <stdio.h> #include <stdlib.h> int main() { int a = 1,b = 10; do { b -= ...

  7. Oracle数据库三种标准的备份方法

    Oracle数据库的三种标准的备份方法: 1.导出/导入(EXP/IMP). 2.热备份. 3.冷备份. 注释:导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一.导出/导入(Export/Imp ...

  8. [转]Linux+XAMPP+eolinker开源版v3.2.4

    eolinker是一个由国人开源的接口管理系统(AMS),特性及介绍详见开源中国-eolinker首页. 搭建步骤参考:eolinker开源指南 系统环境:CentOS Linux release 7 ...

  9. SQL Server-聚焦使用索引和查询执行计划

    前言 上一篇我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解,Always to review the ...

  10. where条件顺序与建索引顺序

    查询时,如果数据量很大,where 后面的条件与建索引的顺序相同,也没有什么多少差别,聚集索引稍微快点; 但where 后面的条件与建索引顺序不同,速度会慢下来,到底慢多少,不同的机器会不一样,没有绝 ...