為什麼Android只能在Linux和Mac下編譯?
01-04
為什麼不能在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 |