為什麼安卓沒有所有手機通用的rom包,必須要廠家或者民間高手自製來適配硬體?

pc上同樣的操作系統可以裝到不同牌子、不同硬體的電腦上,甚至組裝機也可以無壓力裝系統。雖然不同廠商可能會在windows上預裝一些自己的軟體,但是都可以安裝微軟發布的官方包。而手機上就麻煩多了,除了nexus系列以外即使是旗艦級也要等上好幾個月才能用上最新的系統,而普通手機可能永遠都用不上了。安卓為什麼會這樣?會不會有一天,谷歌發布一個新版本的安卓,用戶不用等廠商做rom就可以自己刷機用上最新的系統了?


以下的情況是最最理想化的,各種手機就像PC的兼容機那樣有比較通用的硬體。

Android要應付不同CPU的架構,假設目前有ARM/MIPS/x86三種(不考慮指令集),C/C++寫出的部分(比如內核,共享庫(就是Windows裡面的DLL那樣的東西)),要三份。

一般內核和initramfs打包的boot image一個8M左右,共享庫120M(Nexus 5 的官方 Android 4.4.2),三個架構是128M * 3 = 384M。

我們以最好的情況假設不同設備類型之間最基本的驅動被編譯在了內核里,其他的外圍設備(圖形加速、Wifi、相機、各種感測器)的驅動全部被做成kernel module,在系統啟動以後載入。我去看了電腦裡面這些驅動所佔的空間,120M。三個架構都要的話就是360M。

回過頭來說那些基本不依賴CPU的應用,它們佔512M。

在最理想的情況下(手機們和電腦一樣沒那麼多種主板、設備),512+360+384=1256M,1個多G的刷機包,真的發布了你刷么……


windows也有有硬體沒有驅動的情況好不好?廠家為windows開發驅動和廠家為android版本做適配,其實是一個道理的。


有啊。

http://www.cyanogenmod.org/?


http://www.zhihu.com/question/21569577/answer/18650540


因為硬體不同,導致驅動不同的問題,就算windows也是不同的硬體需要不同的驅動,Android不可能適配那麼多的驅動,移動那麼小的空間也不允許這麼做,不知道以後會不會統一!


1.手機存儲小,32G,64G等,所以要求ROM尺寸要小,這樣各家ROM內的驅動就只有定製啦,而不能做成兼容市面上通用的驅動,這樣尺寸會變大。

2.手機發展歷史時間不如PC發展時間長,沒有形成大一統的兼容驅動。

3.手機硬體相對PC較多,比如手機有基帶,2G,3G,4G網路,GPS,攝相頭,陀螺儀,NFC,重力感應,觸摸屏等,這些設備是PC普遍沒有的,這多出來的這些設備造成了很大的開發量。

4.手機ROM更新換代周期短,做大一統開發來不及,PC上操作系統兩年甚至更長時間發布一個版本,手機每6-8個月發布一款產品。

5.PC是硬體生產商和操作系統分開開發,所以要做到高度兼容性,手機是軟硬體一起由手機廠商統一開發,這就有兩個原因:一手機廠商為了形成差異化功能,就拚命的發展硬體和開發軟體功能;二是軟硬體由廠商統一開發就沒必要兼容其他廠商的硬體啦。

6.Android是開源開放的,不像Windows一樣不開放,所以各Android手機廠商就可以基於Android系統做定製啦。而不必像PC時代,各廠商向操作系統廠商提交兼容性測試,自家把軟硬集成好就行啦。

7.出於成本考慮,PC時代買台電腦後還要花幾千塊錢買操作系統,現在一個手機才上千塊錢,有的幾百塊錢,如果再花上千塊錢買系統的話,手機發展就沒這麼快啦。而且如果手機操作系統廠商為了做大一統的操作系統,要兼容各家硬體的話,就必然造成開發成本高,這些成本都會轉嫁到手機上,這樣對手機的發展不利。


PC有拼裝機android的還沒發布,估計到時候至少驅動的問題能夠緩解


其實沒樓上說的那麼複雜:
1. 以pc為例有uefi這樣的高級驅動架構,不考慮究極性能前提下,外設的免驅動是可以實現的,也就是說手機上的Wi-Fi、顯示屏、usb、麥克風、喇叭、觸摸屏等等可以由廠家提供單獨的固件包,操作系統按照協議使用這些驅動即可。

2. 這種情況下,只有cpu、基帶、顯卡這樣的設備需要操作系統級別的支持,一種做法是按照不同的硬體架構,發布不同的操作系統版本,就像windows的x86/amd64/ia64那樣,可以顯著降低rom大小。

那麼安卓為什麼沒有實現這樣的通用+靈活性呢?可能的原因:

-安卓試圖發展生態,必須排除廠商對於「軟體統一硬體」的擔憂

-由於硬體發展速度太快,廠商自己發布整機rom可以在上市前解決問題


讓Windows開源試試看?


android有一票不同的硬體 三星 高通 mtk nvidia 展訊 海思等等 但windows就amd Intel nvidia這幾家而已


大概是因為windows太牛逼所以硬體只能更著軟體走?


推薦閱讀:

TAG:Android開發 | Android手機 | Android刷機 | Android |