cocos2d-js 熱更新具體解釋(一)

本文將會具體解說cocos2d-js下的熱更新機制。這篇內容先給你們介紹一下兩個manifest文件就當熱身了。app

首先介紹project.manifest:  舉個樣例post

{
"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" : [
   
     ]
spa

   }server


  • packageUrl :  遠程資源的下載根路徑。 (它是爲「dragon_gold1.zip」服務的。沒了這個根路徑咱們都找不到要下載的包)
  • remoteVersionUrl :遠程版本號文件的路徑,用來推斷server端是否有新版本號的資源。
  • remoteManifestUrl :遠程配置文件的路徑,包括版本號信息以及所有資源信息。
  • version : 配置文件相應的版本號。

    (這個用來推斷是否有新的更新包)ip

  • assets :這個比較重要:裏面的value就是相應要更新的包,當中path是更新包的包名。md5:當在下次更新時用來比較此次與上次下載下來的manifest文件裏相應的包的md5 碼是否一樣,不一樣的話需要作些處理(更新。刪除操做)。

    compressed是用來決定下載下來的包是否需要解壓。md5

    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"
...
    }
}

這一就講到這。下次開始用我眼下作的一個項目來具體解說熱更新的使用方法。(備註:這一節是用工做時間寫的。有點馬虎了.......)rem

相關文章
相關標籤/搜索