mozilla
您的搜尋結果

    建置 Boot to Gecko

    當您已經建立好編譯的系統、第一次成功地抓了程式碼以及設定好程式碼,您就可以編譯 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. Clone the appropriate locales
    3. http://hg.mozilla.org/gaia-l10n 複製適當的語系到目錄下;這裡我們放於 gaia-l10n/ 下。接著您會需要將列於語系檔之內的美個語系的倉儲(repo)都複製下來。
    4. 您需要將上面步驟二目錄的絕對路徑設定在 LOCALE_BASEDIR 環境變數中。也要把步驟一中檔案的絕對路徑設定在 LOCALES_FILE 環境變數中。

    如例:

    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. 複製適當的語系到目錄下;像是 gecko-l10n/
    3. 複製 compare-locales.
    4. 將步驟二目錄的絕對路徑設定在 L10NBASEDIR 環境變數中。將步驟一中的語系以空白分隔方式設定在 MOZ_CHROME_MULTILOCALE 環境變數中。

    5. 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 來做這些事情。

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

    已知的錯誤

    • KeyedVector.h:193:31: error: indexOfKey was not declared in this scope

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

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

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

    • arm-linux-androideabi-g++: Internal error: Killed (program cc1plus)

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

    • If you get build errors while the build system is running tests

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

    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 是給模擬器還是給實體手機;細節請參考下列文章:

    Document Tags and Contributors

    Contributors to this page: Jamin_Liu, naihsi, teoli
    最近更新: teoli,
    隱藏側邊欄