使用 Firefox OS 的電腦桌面 client 程式

Firefox OS 的 desktop client,也被稱為 B2G desktop client,讓您可以在一個以 Gecko 為基礎的環境-有點類似實際行動裝置的環境下執行 Gaia 和 web apps。它不會模擬行動裝置的硬體,因此它並不適合拿來測試行動裝置的 API,也不能取代在實際硬體上的測試。然而,它的確擁有一些 Firefox 上所沒有 APIs,像是聯絡人(Contacts)和設定(Settings)的 Apis。因此,當我們在開發應用程式、或是在操作 Gaia 使用者介面上可以派上用場。

這篇文章不但涵蓋下載或是建置 Firefox desktop client,也包含了如何使用它。

下載 nightly 版本

如同 Firefox Nightlies 一般,Firefox OS 的 desktop client 每天都會用最新的原始碼編譯出一個版本。最新的版本將 可以從 Mozilla FTP 伺服器取得。請確定挑到最新的版本和對的封存給您的作業系統。

我們現在可以略過下面內容,直接到「執行 desktop client」。

建置 desktop client

我們需要做的地一件事情是架起 Mozilla 的標準建置環境。一旦我們有了這個環境,我們可以降低我們所需要的原始碼,並且設定建置 Firefox OS 的 desktop client。

第一次下載原始碼

在我們要放置程式碼的目錄(資料夾)中,讓我們將包含所有 Gecko 的 mozilla-central 倉儲 (repository)給複製下來。

 hg clone http://hg.mozilla.org/mozilla-central

更新程式碼

當我們之後編譯後來的版本時,我們要確定我們有最新的原始碼。下列就是如何拉到最新的更新的指令:

cd mozilla-central
hg pull -u

建立 mozconfig

接著,我們要在 mozilla-central 目錄下新增一個檔案 mozconfig 來設定建置系統去編譯 Boot to Gecko client 程式而不是 Firefox:

mk_add_options MOZ_OBJDIR=../build
mk_add_options MOZ_MAKE_FLAGS="-j9 -s"

ac_add_options --enable-application=b2g
ac_add_options --disable-libjpeg-turbo
 
# This option is required if you want to be able to run Gaia's tests
ac_add_options --enable-tests

# turn on mozTelephony/mozSms interfaces
# Only turn this line on if you actually have a dev phone
# you want to forward to. If you get crashes at startup,
# make sure this line is commented.
#ac_add_options --enable-b2g-ril

建置(編譯)

現在我們已經準備好要在目錄 mozilla-central 裡面、透過下面的指令來編譯 desktop client。

./mach build

編譯好的 client 會被放在 ../build/dist 目錄下 (基本上是依照 mozconfig 檔案裡面的 MOZ_OBJDIR 參數所指定的值)。

執行 desktop client

預設 desktop client 會顯示空的畫面,因為它並不知道一開始要載入哪個 web app 來當做系統 app。系統 apps 和 Firefox OS 中預設會有的 apps 就被稱為 Gaia。

下載 Gaia

第一次下載 Gaia、讓我們從 GitHub 上複製原始碼的倉儲 (repository):

 git clone https://github.com/mozilla-b2g/gaia

為了更新成 Gaia 的一個已存在的版本,我們可以從 GitHub 拉最新的更新:

cd gaia
git pull

產生 profile

接著我們需要設定 desktop client 中 Gaia 的 apps。這包括包裝行動裝置上也有的 Gaia apps,以及設定系統 apps 的權限。我們透過產生一個 profile 來做這些事情。接著的指令會做這些事情:新的 profile 包含一個客製的擴充以及其他 B2G 正常運作所需的設定。所以在 gaia 目錄裡執行下面的指令:

cd gaia
make

這應該會在 gaia 目錄下面建立一個 profile 目錄。

在 Linux 上執行

只要在啟動 b2g 執行檔的時候加上 profile 參數,就可以使用我們剛剛產生的 profile 來啟動 desktop client 。如果是自己編譯的話,執行檔的位置會在早先下載下來的 tarball 裡面,如果是自己編譯的話,就會在 ../build/dist/bin 的目錄裡。

.../b2g -profile gaia/profile

您可能會碰到惱人的 rendering 問題。只要在 gaia/profile/prefs.js 裡面加上下面這行就可以避開這個問題:

user_pref("layers.acceleration.disabled", true);

在 Mac 上執行

在 Mac 上,b2g 執行檔的位置和需要指定 profile 的絕對路徑,因此指令比較複雜:

.../B2G.app/Contents/MacOS/b2g -profile /full/path/to/gaia/profile

指令的選項(或參數)

在使用 desktop client 時,你可以使用一些指令的參數來調校執行時的體驗。您可以用 -help 這個參數來列出參數的列表。這一節涵蓋一些特別的參數。

明確指定螢幕大小

您可以用 --screen 來指定您想要模擬的行動裝置的螢幕大小:

b2g --screen=<width>x<height>[@<dpi>]

<width>, <height>, and <dpi> 都是相當不用解釋的參數:行動裝置以 pixels 為單位的長和寬以及 DPI 解析度。舉例來說:

b2g --screen=320x480
b2g --screen=320x480@160

或者,您可以使用某些行動裝置的名字來模擬他們的螢幕大小和解析度:

  • iphone
  • ipad
  • nexus_s
  • galaxy_nexus
  • galaxy_tab
  • wildfire
  • tattoo
  • salsa
  • chacha

開啟 JavaScript console

在您開啟 B2G 的 desktop client 時,您可以藉由加上 -jsconsole 這個記號來開啟
JavaSCript console。在編譯之後,只要:

.../b2g -jsconsole -profile /path/to/your/profile

如果您已經在 Mac 上安裝了 nightly 版本的話,您可以照著下面的指令:

/Applications/B2G.app/Contents/MacOS/b2g -jsconsole -profile /path/to/your/profile

在 B2G 啟動時,指定開啟一個應用程式

您現在可以指定一個應用程式在 b2g desktop client 開始運作時,自動執行起來。這會在其他系統程式被掛載起來之後,馬上讓指定的應用程式被執行起來。只要加上 --runapp 這個參數、後面在加上要執行應用程式的名字,就可以做到了。如下:

 .../b2g -profile /path/to/your/gaia/profile --runapp email

在尋找要執行的 app 之前,指定的名字要被正規化為全部小寫、且不能帶有 - 和空白的符號。接著這個正規化過的名字會被拿來和 app 的 manifest 的名字做比較。

舉例來說,現在 email app 的名字是「E-mail」,但是因為正規化的效果, --runapp email 這個參數是 ok可以執行的。

如果您加了 --runapp 參數但是卻沒有帶後面的 app 名字、或是帶了空的名字的話,b2g client 會列出一串列表,其中包括已知的應用程式和簡短的使用訊息。

Note:--runapp 參數會有關閉螢幕鎖的副作用,且不會再度啟用螢幕鎖。這是假設您不會用這個指令加上 profile 來測試螢幕鎖,否則您會重新打開這個選項。如果這個行為會造成問題的話,也歡迎提供 patch 來改變這個它。

Usage tips

這一節提供一些在使用 B2G desktop client 時,有幫助的技巧。

  • ESC 鍵提供了和 "back" 一樣的功能。
  • Home 鍵提供了和 "home" 按鈕一樣的功能;如果您用的是 Mac 的話,Home 鍵是 Fn+← (Fn + 左鍵)。

Next steps

現在您有一個執行 Boot to Gecko 的 desktop 版本了,您可以在上面測試、開發以及做其他事情:

文件標籤與貢獻者

 此頁面的貢獻者: chrisdavidmills, jeremychen, teoli, kewang, naihsi
 最近更新: chrisdavidmills,