• cocos2d-js 热更新具体解释(一)


    本文将会具体解说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"
    ...
        }
    }

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



  • 相关阅读:
    9 文件处理
    8 字符编码
    7 基础汇总
    6 元组和集合类型
    5 列表和字典类型
    4 数字和字符串类型
    3 条件语句与循环语句
    2 输入输出与运算符
    服务端如何识别是selenium在访问以及解决方案参考二
    服务端如何识别是selenium在访问以及解决方案参考一
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6910054.html
Copyright © 2020-2023  润新知