星期四, 1月 10, 2013

Firefox OS overview and building emulator

前一陣子看到 Firefox OS 的相關文章,發現有提到 adb 之類的指令,我心想怎麼會用到 adb 呢?就去抓了原始碼下來試試看,順便也 Google 了相關的資料(文章最後的簡報檔)。
  1. 第一步就是要配置 Android 的開發環境,像是 repo、git 等等的。
  2. 接著就是要抓 b2g ,這是 Firefox OS 的 bootstrap 代碼,用這份代碼可以幫你抓真正的原始碼,並且進行編譯:git clone git://github.com/mozilla-b2g/B2G.git
  3. 執行 ./config.sh 可以看到支援的裝置,我是選用 emulator,所以輸入 ./config.sh emulator-x86 ,這個步驟會耗時很久很久,因為會用 repo/git 去下載檔案。
  4. 下載完成,就可以用 ./build.sh 進行編譯,我在編譯的過程中遇到幾個比較麻煩的問題:
    1. 少了 libGL 與 libX11 :這要參考 Firefox OS build prerequisites 的說明,我是用 Ubuntu 12.04,所以要做 ln 的動作。
    2. 編 譯 gecko 時,librt 找不到:看了gecko 才知道這邊是用 prebuilt/toolchain/i686-android-linux-4.4.3 在做編譯,而 i686-android-linux-4.4.3 下並沒有提供 librt ,所以就會出現錯誤,我是把 gecko/nsprpub/pr/src/Makefile.in 裡的第 133 行註解掉,也就是避免加上 -lrt 來解決,幸好之後可以順利編譯通過。
    3. 少 package,印象中就只有 yasm,有缺的話,就參考前面提到的 prerequisites 跟錯誤訊息來安裝吧。
  5. 接著就可以執行啦:./run-emulator.sh
看 源碼以後,我發現有很大一部分是直接使用 Android 現有的成果,也就是說,在硬體的驅動程式方面,Android 如果有現成的,是可以直接搬過來用的;Build system、音效、繪圖核心、init 等等幾乎都一樣,對於 Android 底層開發者來說,應該是不會陌生才對。接下來應該就是要看硬體廠商對 Firefox OS 的接受度以及消費者的接受度了。

沒有留言: