[轉載]Android手機driver更新為什麼那樣難?
"Google發佈Android時為什麼不集成一些常見的driver,手機硬體廠商為什麼不能像PC廠商那樣直接向用戶提供設備的driver。" 相信很多網友對於Android的碎片化都有所耳聞,而這個問題確實是更好解決Android碎片化問題的最佳方案之一,而之所以沒有成功的去實施這個方案的原因在於Windows與Android有很大的不同,這個不同點,就讓大家簡單的說一下。首先第一點windows平臺的硬體相對於Android的硬體來說簡直太少了。
Windows/Linux由於對於x86/64架構的通用性完全標準化,這個其實是歷史的原因。在很久很久以前,IBM還是傳說中秒天秒地秒宇宙的時候,為了幹掉競爭對手MAC,使出終極技能 “PC規則規範化” 然後帶領著一眾小弟Intel、Windows這些小弟一起開闢新的世界。
然後把指令集統一,不管怎麼換,都是那兩家,而硬體介面、針腳、協定等等很多也都做出了相應的規範化。然後CPU、記憶體、南北橋下PCIE等等這些架構完全統一。這樣就導致了各家OEM做的各式各樣的東西隨便換,隨便玩。而這樣做的好處就是Windows面臨的不同的CPU架構少之又少,造成了現在Windows輕輕鬆鬆給這些硬體集成這些driver。現在若要讓Windows開源,那場面簡直酸爽。
而Android就不同了,Android需要面對不同的CPU架構,雖然一開始Google就學習IBM將軟體部分開源了,但是眾多的硬體在不同的廠商手機隨便玩耍,也帶來了就是各家維護各家的事情了。隨便舉個例子,例如Android在不考慮指令集的情況下有ARM/MIPS/x86三種,而如果把不同設備類型之間最基本的driver全部寫進內核裏面,如果一個架構需要120MB,那麼三個架構就是360MB,再加上亂七八糟的應用,導致刷機包可能會超過1GB,正因為這種原因導致了Android無法把driver集成。
至於手機硬體商為什麼不直接向用戶提供設備driver?
這個原因其實就是Android是運行在Linux之上的作業系統。簡單的拆解Android系統來看,Android的層次可以分為底層是Linux,中間是叫做 Dalvik 的 Java 虛擬機,而上面則是Android運行時庫。而Linux採用的是宏內核,內核和driver是在一起的,如果要添加driver,基本上就得需要重新編譯內核了。
頁:
[1]