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 的接受度以及消費者的接受度了。

電影流水帳(2013/1/1~2013/1/8)

Rooney Mara
聖光啊,轉眼就 2013 了呢~
你一定想不到這張照片裡的女主角就是飾演 Salander 的人吧~

  • The girl with the dragon tattoo (IMDB, Wikipedia),中譯:龍紋身的女孩。在兩年前我抱著這本小說,欲罷不能地把它看完,對於這部電影,我認為拍的中規中矩,該帶的重點都有帶到,只是感覺上跟兩年前在書裡感受到的不太一樣就是了。Salander 是社會邊緣人,專長是 hacker 跟調查;而 Blomkvist 是一個因為揭發真像而被告毀謗的雜誌主編,這場官司讓 Henrik Vanger 注意到他,而找他來幫忙調查數十年前家族所發生的失蹤事件,整個事件在 Blomkvist 與 Salander 的調查之下,終於還原當時的情景,原來這不只是失蹤事件,還是一件亂倫與連環謀殺事件,最後找到 Henrik 所喜愛的孫女 Harriet 。我記得 Harriet 是在澳洲才對,她經營了一個好大的農場還有了一個兒子,電影裡卻是在倫敦找到,難道是我記錯了?
  • Brave (IMDB, Wikipedia),中譯:勇敢傳說。故事很簡單,媽媽要女兒以和親方式來讓王國團結,女兒不爽,跑了出去,結果碰到巫婆,巫婆給了她魔咒。豈知這魔咒讓媽媽變成了熊,對熊恨之入骨的爸爸當然是不能坐視,於是女兒跟熊就逃了出去,尋找給他魔咒的女巫。女巫跑出去參加藝術祭了,只留下了可能可以解開魔咒的訊息。經過一段時間的相處,媽媽跟女兒開始相互體諒,化解開了之前的溝通障礙,想說應該是把被劃破的地毯補上就可以,就決定要一起偷偷溜回去。溜回去以後,女兒出現說明合作的重要,應該要讓年輕人自己抉擇愛情云云的,終於讓王國內的其他三大勢力摒棄成見。在回到樓上要補地毯時,爸爸發現了熊,就展開追殺。追殺到最後的千鈞一髮之際,解開了魔咒,大家過著幸福快樂的日子。不難看,只是跟之前 Pixar 的作品比起來,少了點說不出來的東西,我還是最喜歡超人特攻隊跟怪獸電力公司的故事,在迪士尼頻道看到時,總是會回味再三。

libchewing 與 mingw

試著要編譯 libchewing,首先下載 libchewing 0.3.4,參考裡面的 README 去搭建編譯環境。

libchewing 是用 mingw 來編譯,所以就請下載 mingw installer 來安裝,安裝時,記得選 C Compiler 與 MSYS Basic System。安裝完成以後,打開命令提示字元,輸入 C:\MinGW\msys\1.0\msys.bat 進入 msys 開發環境,然後輸入 mingw-get install automake autoconf libtool 以安裝 automake, autoconf, libtool

安裝完了,切到 libchewing 解開以後的目錄下,輸入 ./autogen.sh 產生 configure,好了以後,再輸入 ./configure。我在這邊踢到鐵板,./configure 會出現問題,參考 config.log,我認為是 mingw 問題,就試著用一個簡單的 hello.c 來看能不能編譯,結果不行,說 stdio.h 找不到,stdio.h 找不到耶,這實在是太扯了。

試著用 mingw-get 裝上 g++, m4, w32api,mingw32-make …等等的套件,都不行。試著去找 stdio.h,c:\mingw 下能找到的幾個 stdio.h 也都不在 gcc 標頭檔的搜尋路徑裡。百無聊賴之下,就用了 mingw-get update 去更新套件資訊,再用 mingw-get upgrade 更新,很神奇的事發生了,hello.c 編譯通過,也可以找到 stdio.h 了。

回頭再用 ./configure ,就順利產生了 Makefile,再用 make ,libchewing 就編譯成功了!