自 v1.1.10 版本開始,heX 支持將 web 前端資源打包(非壓縮)。我們借助 Chromium 項(xiàng)目中的 GRIT 工具進(jìn)行資源打包。因此,打包過程中需要 Python 2.6 或更新版本的支持。
工具位于 Release/tools 文件夾中,make_grd 的入口為 make_grd.py
,grit 的入口為 grit/grit.py
。
打包生成分為兩部分,其中第一部分可以通過 heX 提供的自動化工具生成,也可以手動生成。
make_grd 工具是一段用 Python 寫的腳本。它的作用是根據(jù)目標(biāo)文件夾下的文件系統(tǒng)結(jié)構(gòu)生成一個資源列表文件,擴(kuò)展名為 .grd,本質(zhì)上為一個 XML 文件。里面包含以下重要信息:
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)然我們可以自己手動生成這個文件。
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 文件名。
此時我們在輸出的文件夾中得到了 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
,其中 xxx 為 application_shortname 值,yyy 為 web_resources.json 文件中的文件及其路徑。如:chrome://test/main/index.html
。
更多建議: