Gonk 秘辛之編譯系統

by news
2012.10.29 02:40PM
2

之前的文章大都集中在 Firefox OS 運行時的討論,而今天就讓我來平衡報導一下 Firefox OS 運行前的其中一個工作好了,那就是編譯系統;首先要提到的就是 Firefox OS 利用了來自於 Android 的編譯系統,因此 Gaia 和 Gecko 就必需做適當的配置以加入到編譯系統裡。先來看看 Firefox OS 到底有哪些項目需要被加入呢?有 Gaia\ Rilproxy\ Gecko 和 Gonk-misc 等等,前二項由於是針對 Firefox OS 而設計的,因此可以發現其目錄中直接可以看到 Android.mk  (Android 認定的 makefile 名稱);而 Gecko 又是如何呢?一般人可能直覺上就認為應該是直接把 Android.mk 放入 Gecko 裡吧?哦!不對哦, 正確答案是在 Gonk-misc 這個目錄裡! Why?

Gecko 原本是 Firefox browser 裡的核心,它被用在不同的 OS 上,像是 Windows\Mac OS\Linux 和 Android 等, 因此它有一套自己的編譯系統,以便可以編譯不同的版本給各個平台使用, 為了不破壞 Gecko 原有的編譯系統又要將它加入到 Android 的編譯系統中,因此一個稱為 Gonk-misc 的暗椿就被埋到目錄結構裡了。基本上的方法就是撰寫一份 Android.mk 到 Gonk-misc 目錄裡,使得編譯系統在編譯時,能夠有一個管道用來聯繫進入 Gecko 的編譯系統中,再將 Gecko 編譯完的產物移到相關產出目錄中, 最後 Gecko 就被編譯完成了。

因此如果我們再深入了解一下 Gonk-misc 中的 Android.mk ,你便會看到它如何覆蓋掉相關的 make target 而轉移成 Gecko 的編譯方式 。首先該 Android.mk 宣告了一個叫做 Gecko 的 module 再告訴編譯系統它是一個已經事先編譯完的 module ,因此編譯系統只要負責把相關的檔案拷貝到產出目錄中就行了,接下來再覆蓋掉原本找尋編譯完 module 的 target ,將它改成是編譯 Gecko 的標準步驟再加上把相關編譯後的檔案移至相對應的產出目錄中 ( out/target/product/XXX/system/b2g ),這樣一來就順利的將 Gecko 成功加入到 Android 的編譯系統中。另外為了將 Gecko 編譯成 Firefox OS 的版本,需要設定很多相關的參數,而這些參數已經被集中在 default-gecko-config 這個檔案裡,放進 Gonk-misc 中一起加進原始碼目錄裡了。

最後,為了將 Firefox OS 相關的 modules (例如: Gaia / Gecko / Rilproxy 等) 預設加進 system.img 裡,在 build/target/product 這一個目錄中新增了 b2g.mk 這樣一個檔案,用來將這些 modules 加進 PRODUCT_PACKAGES 的名單中;接下來就將 system.img 下載至手機中,準備開始欣賞 Firefox OS 帶給你的奇妙體驗吧。

回應 0
小米平板4將在6/25回歸 小米同日也要在香港上市 小米平板4將在6/25回歸 小米同日也要在香港上市 7 個小時前
Google、Unity宣布深入合作 遊戲開發者在Google Cloud打造更優化的遊戲內容 Google、Unity宣布深入合作 遊戲開發者在Google Cloud打造更優化的遊戲內容 7 個小時前
Adobe推全新一站式影音剪輯軟體Project Rush 跨電腦、手機裝置影片簡單做 Adobe推全新一站式影音剪輯軟體Project Rush 跨電腦、手機裝置影片簡單做 7 個小時前
美國國會再卡中興 新國防預演算法案重提出口限制 不甩川普 美國國會再卡中興 新國防預演算法案重提出口限制 不甩川普 9 個小時前
uber台灣推大車共乘服務:uberXL 線上預約最多6人共乘 載行李也沒問題 uber台灣推大車共乘服務:uberXL 線上預約最多6人共乘 載行李也沒問題 9 個小時前
願意等車就給你優惠 Uber推出低價版給等候的乘客 願意等車就給你優惠 Uber推出低價版給等候的乘客 10 個小時前
自拍先決的美型機, OPPO R15 星空紫動手玩 自拍先決的美型機, OPPO R15 星空紫動手玩 10 個小時前
癮觀點:機車問題頻傳的雙北各大橋梁真的無解嗎? 癮觀點:機車問題頻傳的雙北各大橋梁真的無解嗎? 11 個小時前

熱門文章

最新消息

本日精選