官术网_书友最值得收藏!

3.3 Manifest文件詳解

AssetsManagerEx使用Manifest配置文件來(lái)描述增量更新的詳細(xì)信息,Manifest意為清單,文件內(nèi)容是JSON格式。在增量更新中會(huì)用到兩種Manifest文件,即ProjectManifest和VersionManifest, ProjectManifest文件描述了詳細(xì)的增量更新信息,如版本信息、要下載的資源文件列表、文件的MD5,以及它們的下載路徑等。我們需要有兩個(gè)ProjectManifest文件,即一個(gè)本地的和一個(gè)遠(yuǎn)程的Manifest,在檢查更新時(shí),根據(jù)本地的Manifest和遠(yuǎn)程的Manifest進(jìn)行判斷,從而判斷是否需要更新。

VersionManifest是ProjectManifest的簡(jiǎn)化版,這個(gè)文件是可選的,VersionManifest文件僅僅記錄了版本信息以及ProjectManifest的下載路徑等信息,因?yàn)椴⒉皇敲看螁?dòng)都有內(nèi)容要更新,所以通過(guò)VersionManifest文件就可以判斷。當(dāng)有更新時(shí)才去下載詳細(xì)的ProjectManifest,如果ProjectManifest文件的內(nèi)容不多,也可以忽略VersionManifest文件,如果不配置VersionManifest文件,則每次檢查更新時(shí)都會(huì)直接下載服務(wù)器的ProjectManifest進(jìn)行判斷。下面是一個(gè)簡(jiǎn)單的VersionManifest文件示例。

        {
            "packageUrl": "http://localhost/test/",
            "remoteManifestUrl": "http://localhost/test/project.manifest",
            "remoteVersionUrl": "http://localhost/test/version.manifest",
            "version": "1.0.2",
            "groupVersions": {
              "1": "1.0.1",
              "2": "1.0.2"
            }
        }

VersionManifest中包含了增量更新的版本信息,其中版本號(hào)和版本組是需要注意的,因?yàn)锳ssetsManagerEx是同時(shí)根據(jù)這兩個(gè)字段來(lái)判斷是否需要更新的。版本組包含了很多小的版本號(hào),如1.0.1、1.0.2等,在版本號(hào)字段相同的情況下,只要服務(wù)器的Manifest中版本組字段中有一個(gè)版本號(hào)是本地沒(méi)有的,那么就需要更新,當(dāng)需要更新時(shí),會(huì)獲取服務(wù)器的ProjectManifest進(jìn)行進(jìn)一步的判斷,如圖3-2所示為版本信息結(jié)構(gòu)。

圖3-2 版本信息結(jié)構(gòu)

下面是一個(gè)完整的ProjectManifest示例。

      {
          "packageUrl": "http://localhost/test/",
          "remoteManifestUrl": "http://localhost/test/project.manifest",
          "remoteVersionUrl": "http://localhost/test/version.manifest",
          "version": "1.0.2",
          "groupVersions": {
            "1": "1.0.1",
            "2": "1.0.2"
          },
          "assets": {
              "1.0.1": {
                "path": "release1.0.1.zip",
                "md5": "01621650ddc23821709efd68e3786d2c",
                "compressed": true
              },
              "1.0.2": {
                "path": "release1.0.2.zip",
                "md5": "596d892583761b91d910ecd45f473725",
                "compressed": true
              }
          }
          "searchPaths" : [
                      "res/"
          ]
      }

ProjectManifest完全包含了VersionManifest中的全部?jī)?nèi)容,除了版本信息之外,ProjectManifest還包含了詳細(xì)的資源信息,最主要的是資源列表信息。資源列表信息由一個(gè)個(gè)資源信息組成,每個(gè)資源信息都包括下載路徑、MD5、是否被壓縮、分組等屬性。如果資源信息下沒(méi)有path屬性,會(huì)將自定義的資源名作為path的默認(rèn)值,如上面的1.0.1資源沒(méi)有配置path,那么path就會(huì)被設(shè)置為1.0.1。如圖3-3所示為資源信息結(jié)構(gòu)。

圖3-3 資源信息結(jié)構(gòu)

關(guān)于Manifest文件的生成,需要自己實(shí)現(xiàn)一個(gè)小工具按照AssetsManagerEx的規(guī)則來(lái)生成Manifest文件。

主站蜘蛛池模板: 磐石市| 威海市| 宁晋县| 永济市| 株洲市| 卢氏县| 西平县| 临澧县| 枝江市| 鹿邑县| 澄江县| 曲靖市| 原阳县| 诏安县| 历史| 华容县| 尚志市| 广灵县| 天水市| 绥阳县| 南丰县| 崇礼县| 龙陵县| 原阳县| 开江县| 静安区| 德庆县| 诸暨市| 普兰县| 洛阳市| 长乐市| 玉门市| 班戈县| 明水县| 颍上县| 天峨县| 石渠县| 西乌珠穆沁旗| 武邑县| 崇明县| 永新县|