2012年5月28日 星期一

自己編譯 Boot2Gecko 快速上手


B2G,Boot2Gecko 是最近 Mozilla 另外一個 Open Source 專案,將 Web 開發的相關技術帶回到 Mobile 的開發平台上面,用 HTML/CSS/JavaScript 等你所熟悉的 Web Technologies,就可以輕輕鬆鬆的開發 Mobile app,這個專案目前還在開發中,想要搶先體驗的朋友可以自己上去抓 B2G 的 source 自己 build。

首先介紹一下筆者的 building 環境:

  • Ubuntu 11.10 (64-bit)
  • 4 GB Ram
  • 2.13 GHz Intel Core 2 Duo

整個流程耗時會蠻久的,尤其是抓各種 repository 那段,所以建議睡覺前放著,隔天早上起來就可以進行下個步驟。

建立 Build 環境

首先必須先在系統裡面安裝下列的套件,進入終端機直接把下列指令貼上即可:

sudo apt-get build-dep firefox git mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev mesa-common-dev autoconf2.13 ia32-libs gcc-multilib g++-multilib bison flex gperf lib32z-dev lib32ncurses5-dev lib32ncursesw5-dev libncurses5-dev libidl-dev lib32gomp1 autoconf2.13 ccache libx11-dev lib32readline-gplv2-dev libgl1-mesa-dev yasm

(Mozilla 英文 wiki 裡面多了一個 ia32-libs-dev,這個現在已經沒有了,所以筆者就拿掉了,另外如果讀者用的是 Ubuntu 32-bit 的 OS 的話,套件名字裡面有 32 的套件通通不用裝。)

另外就是需要安裝 Android SDK,這個如果有在寫 Android 程式的人應該都很清楚了,我們需要用到裡面的 platform-tools,要透過 adb 這個程式把相關的東西裝進去,另外如果要刷機還會用到 fastboot。

如果對 Android SDK 不熟的讀者,可以到 http://developer.android.com/sdk/index.html 直接下載 Linux 版本的 Android SDK,我們只需要 platform-tools ,所以不必安裝 Eclipse。

下載完請解壓縮至任一資料夾(以筆者的習慣來說是放在 ~/opt/),解完壓縮後該資料夾底下應該會出現一個名叫「android-sdk-linux」的資料夾,請先 cd 到該資料夾底下:

cd /path/to/android-sdk-linux
tools/android

然後勾選 Tools 中的 Android SDK Platform-tools,然後安裝下去。接下來會發現剛剛的資料夾底下出現了一個「platform-tools」,這就表示現在你的 Android SDK 裡面已經裝好了 platform-tools 了,不過還得把這個目錄加進 $PATH 裡面指令才會生效。

export PATH="$PATH:/path/to/android-sdk-linux"

把這行寫進 ~/.profile 裡面,然後重新打開你的終端機視窗,輸入 adb,出現一大篇說明就代表你的 platform tools 生效了,如果是 command not found 可能要回去檢查一下有沒有哪個步驟做錯。

另外如果 android 那隻程式 run 不起來可能是因為沒裝 JRE (Java Runtime Environment),在 Ubuntu 下面可以透過 apt-get 輕輕鬆鬆安裝:
sudo apt-get install openjdk-7-jre

下載 B2G 的 Source Code

自己找一個地方,cd 進去之後下
git clone https://github.com/andreasgal/B2G.git

裡面有一個檔案 INSTALL,詳細描述了建立環境、編譯和如何刷機的英文步驟,有興趣自己刷機的朋友可以往這個檔案裡面看。

接下來就是編譯步驟了,首先進入到剛剛下載的 repo 中

cd B2G

接下來輸入

make sync

會開始狂抓一堆 git repository,所以開始這個步驟前請先確認一下硬碟的空間還夠不夠,這個步驟所需時間取決於你的網路速度,像我就是按完這個步驟就去睡覺了,隔天早點起床,不要浪費一個美好的早晨,如果你早起一點的話中午之前大概就可以編譯完畢了。

接下來要先設定 config,這邊因為你要做的目標而用不同的 makefile 指令,如果只是要讓 Android  emulator 可以跑,就下

make config-qemu-ics

這個步驟很快,緊接著就是編譯 gonk

make gonk

這個步驟就有點久了,筆者的電腦配備大約兩個小時半可以完成,中間可以去吃個早餐加上看個報紙(其實你看一下 Facebook 時間馬上就過了:D),然後就是最後用這個指令收尾,很快就結束

make

這時候應該迫不及待的想要開啟 emulator 來看看辛苦一晚加一早的成果了,因為我們剛剛編譯的是 ics 版的,所以下

./emu-ics.sh

就開起來了,不過會出現 Server not found,那是因為 gaia 還沒有安裝進來,gaia 是 B2G 的 UI 介面,都是用 Web 的方式寫的。

這時候請保持 emulator 開啟的狀態,然後回到剛剛那目錄下以後使用這個指令安裝 gaia:

make install-gaia

此時再回到 emulator 按一下右邊虛擬鍵盤的 Home 鍵,整個 UI 介面就會被重新載入了,解鎖畫面用的是上滑解鎖,會看到一個輸入手機密碼鎖的畫面,預設是 0000。

Trouble Shooting

Q:如果我在 make sync 的過程中中斷,之後一直出現說某 repo 不是一個 git repository,程序無法繼續怎麼辦?
A:找一下錯誤訊息顯示的 repository 目錄,比如說 bionic.git,那我就去 .../.projects/ 底下把 bionic 整個砍掉,重新 make sync 就可以繼續。


沒有留言:

張貼留言