From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- files/zh-tw/archive/b2g_os/building/index.html | 124 +++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 files/zh-tw/archive/b2g_os/building/index.html (limited to 'files/zh-tw/archive/b2g_os/building') diff --git a/files/zh-tw/archive/b2g_os/building/index.html b/files/zh-tw/archive/b2g_os/building/index.html new file mode 100644 index 0000000000..9e5c54202c --- /dev/null +++ b/files/zh-tw/archive/b2g_os/building/index.html @@ -0,0 +1,124 @@ +--- +title: 建置 Boot to Gecko +slug: Archive/B2G_OS/Building +translation_of: Archive/B2G_OS/Building +--- +
+
+

當您已經建立好編譯的系統、第一次成功地抓了程式碼以及設定好程式碼,您就可以編譯 Boot to Gecko。

+

更新程式碼

+

如果您不是第一次編譯B2G,您需要在編譯之前先抓取最新的程式碼。您可以執行以下指令來更新B2G工具及相依套件:

+
git pull
+./repo sync
+
+

您可以藉由指定名稱來更新某部分的倉儲:

+
./repo sync gaia
+
+

repo指令也有其他您可能會有興趣的選項可用;您可執行 repo help 指令來獲取有用的資訊。

+

編譯

+
+

注意:在編譯前,您可以設置一個 .userconfig 檔案來訂製這次編譯。使用 .userconfig 檔案來客製 有更多詳細資訊。

+
+

執行 build.sh 就可以開始編譯 Boot to Gecko:

+
cd B2G
+./build.sh
+
+

是時候該再喝杯咖啡,或小睡一下了(尤其是第一次編譯)。

+

專程編譯某些模組

+

如果您只想要編譯某個模組,例如 Gecko,您可以指定名稱:

+
./build.sh gecko
+
+

您也可以用這個指令來取得您編譯的模組的列表:

+
./build.sh modules
+
+

設定要使用的處理器數目

+

B2G 的編譯 scripts 預設使用系統的 cores 數量加二作為平行工作的數量。您可以再執行 build.sh 的時候指定 -j 參數來改變這個預設值。如果您想要把編譯工作丟到背景、並且減輕 CPU 負載來做其他事情的話,這對您就很方便。當您面臨到編譯問題時,如果您一次就只執行一個編譯工作的話、設定處理器數目也可以讓您更容易讀取編譯的錯誤輸出,真的很方便。

+

舉例來說,設定同時只會有兩個工作來編譯:

+
./build.sh -j2
+
+

對於此對常見的使用案例就是防止不要平行編譯。這會讓編譯的輸出更加容易閱讀,更容易釐清編譯的問題。執行下面指令:

+
./build.sh -j1
+
+

多語系編譯

+

建立多語系的編譯版本:

+

Gaia

+
    +
  1. 決定要用哪個 Gaia 語系檔。這邊我們用 locales/languages_dev.jsonlocales/languages_all.json 當做我們 Gaia 的語系檔。
  2. +
  3. Clone the appropriate locales
  4. +
  5. http://hg.mozilla.org/gaia-l10n 複製適當的語系到目錄下;這裡我們放於 gaia-l10n/ 下。接著您會需要將列於語系檔之內的美個語系的倉儲(repo)都複製下來。
  6. +
  7. 您需要將上面步驟二目錄的絕對路徑設定在 LOCALE_BASEDIR 環境變數中。也要把步驟一中檔案的絕對路徑設定在 LOCALES_FILE 環境變數中。
  8. +
+

如例:

+
export LOCALE_BASEDIR=$PWD/gaia-l10n
+export LOCALES_FILE=$PWD/gecko/gaia/shared/resources/languages-dev.json
+
+

Gecko

+
    +
  1. 決定要用哪個 Gecko 語系檔。這邊我們用 b2g/locales/all-locales 當做我們的 Gecko 語系檔。
  2. +
  3. 複製適當的語系到目錄下;像是 gecko-l10n/ 。 + +
  4. +
  5. 複製 compare-locales.
  6. +
  7. +

    將步驟二目錄的絕對路徑設定在 L10NBASEDIR 環境變數中。將步驟一中的語系以空白分隔方式設定在 MOZ_CHROME_MULTILOCALE 環境變數中。

    +
  8. +
  9. +

    compare-locales/scripts 目錄加入到 PATH 變數、 compare-locales/lib 加入到 PYTHONPATH 變數中.

    + 如例: +
    export L10NBASEDIR=$PWD/gecko-l10n
    +export MOZ_CHROME_MULTILOCALE="ja zh-TW"
    +export PATH="$PATH:$PWD/compare-locales/scripts"
    +export PYTHONPATH="$PWD/compare-locales/lib"
    +
    +

    當您完成這些設定之後,就可以執行 build.sh 了。

    +

    看起來您也可以用 .userconfig 來做這些事情。

    +

    當我們整理好之後,可能會修改這些指令。

    +
  10. +
+

已知的錯誤

+ +

當您的 gcc 版本太新的時候會出現這個錯誤。請安裝 gcc/g++/g++-multilib 4.6.x 版本.

+

設置您的編譯環境 有更多資訊。

+
+

社群上的提醒: 用 4.7.x 加上修改一些 B2G 程式碼可能可以 (gcc 會告訴你要改哪些地方) 但是這邊就沒人能幫你了!但是不改就不會碰到這些問題。

+
+ +

如果看到這個訊息,通常是代表記憶體不夠。在執行 ./build.sh 之前請確認有足夠的記憶體,如果您的系統記憶體有4G的話,應該可以跑的很順利。

+ +

有時候(尤其是在作業系統或是編譯工具更新後)您在編譯系統執行編譯後測試時,會碰到一些靈異現象就像下面這樣:

+
Generating permissions.sqlite...
+test -d profile || mkdir -p profile
+run-js-command  permissions
+WARNING: permission unknown:offline-app
+WARNING: permission unknown:indexedDB-unlimited
+build/permissions.js:122: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPermissionManager.add]
+make[1]: *** [permissions] Error 3
+make: *** [gaia/profile.tar.gz] Error 2
+

這種情況下試著刪除 gaia/xulrunner-sdk 目錄然後再重新抓程式碼:

+
rm -r gaia/xulrunner-sdk
+
+

這樣會刪掉由編譯系統自動抓取、預先編譯的 XULRunner;在下一次編譯的時候,XULRunner 會再被自動抓取一份。

+

接著的步驟

+

在編譯後,下個步驟就取決於您編譯的 Boot to Gecko 是給模擬器還是給實體手機;細節請參考下列文章:

+ -- cgit v1.2.3-54-g00ecf