日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2d-js 热更新具体解释(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文將會(huì)具體解說cocos2d-js下的熱更新機(jī)制。這篇內(nèi)容先給大家介紹一下兩個(gè)manifest文件就當(dāng)熱身了。

首先介紹project.manifest: ?舉個(gè)樣例

{
"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 : ?遠(yuǎn)程資源的下載根路徑。 (它是為“dragon_gold1.zip”服務(wù)的。沒了這個(gè)根路徑我們都找不到要下載的包)
  • remoteVersionUrl :遠(yuǎn)程版本號(hào)文件的路徑,用來推斷server端是否有新版本號(hào)的資源。
  • remoteManifestUrl :遠(yuǎn)程配置文件的路徑,包括版本號(hào)信息以及全部資源信息。
  • version : 配置文件相應(yīng)的版本號(hào)。

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

  • assets :這個(gè)比較重要:里面的value就是相應(yīng)要更新的包,當(dāng)中path是更新包的包名。md5:當(dāng)在下次更新時(shí)用來比較這次與上次下載下來的manifest文件里相應(yīng)的包的md5 碼是否同樣,不同的話須要做些處理(更新。刪除操作)。

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

    group是重中之重。它是用來實(shí)現(xiàn)增量跟新的。它的值與groupVersions相相應(yīng)。

舉個(gè)樣例:有這么兩個(gè)用戶,第一個(gè)用戶下載app之后一直沒玩。第二個(gè)用戶一直在玩每次有更新時(shí)第二個(gè)用戶都會(huì)跟著更新,如今第二個(gè)用戶當(dāng)前的version為1.0.1時(shí)。他會(huì)去更新update2這個(gè)包,可是第一個(gè)用戶一直沒玩所以他的更新包version是1.0.0。這時(shí)他須要去更新update1和update2這兩個(gè)包, 這就是一個(gè)簡單的實(shí)現(xiàn)增量更新的樣例。 (備注:當(dāng)時(shí)用2.x版本號(hào)引擎沒提供這個(gè)功能。自己做了個(gè)增量更新功能坑了一段時(shí)間,如今引擎已經(jīng)提供這個(gè)功能方便多了)。
我一直再講project.manifest這個(gè)文件卻沒有說version.manifest,它事實(shí)上是個(gè)簡化版 的project.manifest。當(dāng)我們版本號(hào)已經(jīng)有了幾十個(gè)甚至幾百個(gè)更新包時(shí)。顯然下載project.manifest來推斷是否有無更新是不明智的(由于更新包越多project.manifest體積變得越大。對(duì)于手機(jī)這么貴的流量下載這么大的東西是不劃算的),因此此時(shí)的version.manifest用處就明顯了,不管project.manifest體積多大,它永遠(yuǎn)僅僅須要這么幾行代碼就能夠了:
{
"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"
...
? ? }
}

這一節(jié)就講到這。下次開始用我眼下做的一個(gè)項(xiàng)目來具體解說熱更新的使用方法。(備注:這一節(jié)是用工作時(shí)間寫的。有點(diǎn)馬虎了.......)



總結(jié)

以上是生活随笔為你收集整理的cocos2d-js 热更新具体解释(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。