為什麼Android只能在Linux和Mac下編譯?

為什麼不能在win編譯?


早年(2007,那時Android還在保密,長得也是黑莓樣)曾經可以過,那時候Android framework有simulator build,可以編譯出win32 native的Android runtime。因為下面不依賴Linux,這個特殊的build是單進程的,應用和所有系統服務跑在一起,binder IPC全在進程內實現,有一個地方出問題就整個crash。

但這個特殊的build其實也是在Linux下cross compile出來的。我曾經改成用cygwin來編譯,build出來的東西也勉強能運行,但很不穩定。

後來隨著Android越來越複雜,對Linux依賴越來越大(binder, shared memory, low mem killer),這個simulator也沒了。

說這麼多才發現好像偏題了...理論上不是不可以,歸根到底不外乎make和cross compiler這對東西。但win下面天生缺少那一堆常用工具(bison, yacc, 等等),cygwin和mingw32又是兩套路線。cygwin模擬比較完整但效率極低,mingw32小快靈但路徑處理又是win32風格,makefile改到天荒地老。最關鍵是Google那幫人都用Mac和Linux,估計沒人有興趣給windows折騰這些麻煩事。


因為安卓基於Linux內核,而Linux和Mac在本源上相同。


畢竟Android的底層是Linux類似的,還是在類Unix系統中編譯更方便,快捷。還有就是搞Android的那群人應該不屑用Windows系統吧,畢竟有點高大上的感覺。


問題的前提錯了,不是不能,只是麻煩而已。

就和你在Windows上編譯Linux內核是一樣的,區別在於這個有很多人這麼做,而Android還沒有人發個教程什麼的←_←


推薦閱讀:

Nokia x深度定製系統為什麼沒有像當年阿里雲os一樣引起谷歌的勃然大怒, 安卓系統的深度定製的邊界在哪裡?
如何評價 MIUI9 ?
如何評價一加手機的新ROM名字「H2 OS」?
CyanogenMod Installer 具體怎麼用,為何可以不要求 Rooted 也不要求 bootloader 解鎖?
為什麼你們又刷回官方 ROM?

TAG:Android | Android第三方ROM |