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 https://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 版本了,您可以在上面測試、開發以及做其他事情: