heX 打包生成工具說明

2018-08-29 14:03 更新

自 v1.1.10 版本開始,heX 支持將 web 前端資源打包(非壓縮)。我們借助 Chromium 項(xiàng)目中的 GRIT 工具進(jìn)行資源打包。因此,打包過程中需要 Python 2.6 或更新版本的支持。

工具位于 Release/tools 文件夾中,make_grd 的入口為 make_grd.pygrit 的入口為 grit/grit.py。

打包生成分為兩部分,其中第一部分可以通過 heX 提供的自動化工具生成,也可以手動生成。

1. make_grd

make_grd 工具是一段用 Python 寫的腳本。它的作用是根據(jù)目標(biāo)文件夾下的文件系統(tǒng)結(jié)構(gòu)生成一個資源列表文件,擴(kuò)展名為 .grd,本質(zhì)上為一個 XML 文件。里面包含以下重要信息:

  • /grit/outputs/output[filename=web_resources.json]:生成供 heX 讀取的 JSON 版資源文件列表。此文件名必須為 web_resources.json,不可改變。
  • /grit/outputs/output[filename=*.pak]:生成供 heX 讀取的打包后的 PAK 格式的資源文件。所有的 web 前端資源都將打包到此文件中。此文件名默認(rèn)為 web_resources.json,也可以是其他文件名,這取決于清單文件中的 application_shortname 配置項(xiàng)。
  • /grit/release/includes/include:include 元素包含了三個重要屬性,
    • file 屬性指定了文件名以及其相對路徑,此路徑是相對于上面的目標(biāo)文件夾。
    • name 屬性為此文件指定一個名稱,不可重復(fù)。
    • type 屬性為此文件類型,一般為擴(kuò)展名,若沒有擴(kuò)展名則自動轉(zhuǎn)換為 BINDATA。

make_grd 工具的調(diào)用方法很簡單,默認(rèn)情況下必須指定 path 參數(shù):

python tools/make_grd.py --path=web

這樣,工具就會試圖遍歷當(dāng)前工作路徑下的 web 文件夾內(nèi)的所有文件及子文件夾,并在當(dāng)前工作路徑下生成一個 web_resources.grd 文件。

也可以指定生成的 GRD 文件的文件名,以及 GRD 文件中輸出的 PAK 文件的文件名。--output 指定輸出的 GRD 文件,--pak 指定輸出的 GRD 文件中指定的 PAK 文件名,如:python tools/make_grd.py --path=web --output=web.grd --pak=test.pak

最終可能會生成如下 GRD 文件:

<?xml version="1.0" encoding="utf-8"?>
<grit current_release="1" latest_public_release="0">
  <outputs>
    <output filename="web_resources.json" type="rc_header">
      <emit emit_type="prepend"/>
    </output>
    <output filename="test.pak" type="data_package"/>
  </outputs>
  <release seq="1">
    <includes>
      <include file="index.html" name="INDEX_HTML" type="html"/>
  </release>
</grit>

當(dāng)然我們可以自己手動生成這個文件。

2. grit

grit 工具全稱 Google Resource and Internationalization Tool,是 Chromium 項(xiàng)目的一部分。我們對 GRIT 進(jìn)行了輕度的改裝,以使它可以生成出我們需要的 web_resources.json。調(diào)用方法:

首先確定要打包的文件夾,如 /Users/admin/dev/test,將上一步的 GRD 文件復(fù)制到這個文件夾中。執(zhí)行 python tools/grit/grit.py -i /Users/admin/dev/test/web_resources.grd build -o web

。

上面這段命令的意思是,讀取 /Users/admin/dev/test/web_resources.grd,并在當(dāng)前工作路徑下的 web 文件夾下生成打包后的資源文件,包括 web_resources.json 以及 GRD 文件中指定的 PAK 文件名。

3. 加載資源

此時我們在輸出的文件夾中得到了 web_resources.json 及 PAK 文件。將這兩個文件復(fù)制到 heX 應(yīng)用程序所在目錄,并修改 manifest.json。

manifest.json 中有一項(xiàng) use_grit_package 必須設(shè)置為 true,另一項(xiàng) application_shortname 值為字符串,允許為空。

當(dāng)值為空時:PAK 文件的文件名 必須web_resources.pak,此時加載的 URL 形式為 chrome://xxx/yyy,其中 xxx 為當(dāng)前可執(zhí)行文件名(默認(rèn)為 hexclient),yyy 為 web_resources.json 文件中的文件及其路徑。如:chrome://hexclient/index.html。

當(dāng)值不為空時:PAK 文件的文件名 必須application_shortname 的值 .pak,如 application_shortname 值為 test,則 PAK 文件名為 test.pak。此時加載的 URL 形式為 chrome://xxx/yyy,其中 xxxapplication_shortname 值,yyy 為 web_resources.json 文件中的文件及其路徑。如:chrome://test/main/index.html。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號