zoukankan      html  css  js  c++  java
  • 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"
    ...
        }
    }

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



  • 相关阅读:
    The 4 Most Important Skills for a Software Developer
    Youth is not a time of life, it is a state of mind——青春不是一段年华,而是一种心境
    英雄所见略同——每个人都有的一套价值体系观念
    28法则————10分钟休息胜过半小时努力
    离职员工心声
    员工必备素质、能力——职场精英
    安卓sqlite数据库的使用
    安卓adb命令的使用
    windows使用命令行,提高效率
    命令行编译java文件(含第三方jar包)
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6910054.html
Copyright © 2011-2022 走看看