哈拉閒聊
瀏覽 : 2041
分享

[其他] Android手機驅動更新為啥那麼難?

一般用戶

等級6

資深大大

陳誠誼2015-9-11 18:36

“Google發布Android時為什麼不集成一些常見的驅動,手機硬件廠商為什麼不能像PC廠商那樣直接向用戶提供設備的驅動。”

相信很多網友對於Android的碎片化都有所耳聞,而萬碎萬碎萬萬碎說出的這個問題確實是更好解決Android碎片化問題的最佳方案之一,而之所以沒有成功的去實施這個方案的原因在於Windows與安卓有很大的不同,這個不同點,就讓作者給大家簡單的說一下。


首先第一點windows平台的硬體相對於Android的硬體來說簡直太少了。


Windows/Linux由於對於x86/64架構的通用性完全標準化,這個其實是歷史的原因。在很久很久以前,IBM還是傳說中秒天秒地秒宇宙的時候,為了幹掉競爭對手MAC(中文稱:麥金塔),使出終極技能“PC規則規範化”然後帶領著一眾小弟Intel、Windows這些小弟一起開闢新的世界。

然後把指令集統一,不管怎麼換,都是那兩家,而硬體接口、針腳、協議等等很多也都做出了相應的規範化。然後CPU、內存、南北橋下PCIE等等這些架構完全統一。這樣就導致了各家OEM做的各式各樣的東西隨便換,隨便玩。而這樣做的好處就是Windows面臨的不同的CPU架構少之又少,造成了現在Windows輕輕鬆鬆給這些硬體集成這些驅動。現在若要讓Windows開源,那場面簡直酸爽。

而Android就不同了,Android需要面對不同的CPU架構,雖然一開始Google就學習IBM將軟體部分開放了,但是眾多的硬體在不同的廠商手機隨便玩耍,也帶來了就是各家維護各家的事情了。隨便舉個例子,例如Android在不考慮指令集的情況下有ARM/MIPS/x86三種,而如果把不同設備類型之間最基本的驅動全部寫進內核裡面,如果一個架構需要120MB,那麼三個架構就是360MB,再加上亂七八糟的應用,導致刷機包可能會超過1GB,正因為這種原因導致了Android無法把驅動集成。

至於手機硬件商為什麼不直接向用戶提供設備驅動?

這個原因其實就是Android是運行在Linux之上的操作系統。簡單的拆解Android系統來看,Android的層次可以分為底層是Linux,中間是叫做Dalvik的Java虛擬機(現在又是ART預編譯了,天啊現在更麻煩),而上面則是Android運行時庫。而Linux採用的是宏內核,內核和驅動是在一起的,如果要添加驅動,基本上就得需要重新編譯內核了。


以上文章來自http://news.mydrivers.com/1/446/446493.htm
ANDROID手機要做到統一那真的太難了..不過谷歌正一步步的從OEM廠商中取回主導權..透過谷歌的API一步步走向自動更新,不再事事透過硬體廠商來做更新事宜。當然這樣做有好有壞,當谷歌一不小心有個BUG時那可就要等上好一陣子了...如現在的耗電問題.就是如此..

本文章最後由( 陳誠誼 )於 2015-9-11 19:10 編輯

★HTC論壇三週年生日快樂★
因為你讓我超越想像、不斷實現完美的畫面,讓我看見這一路令人驚豔的一切,我愛上HTC~
檢舉 回應

一般用戶

等級2

新手鄉民

Jerry Liu2015-9-12 07:10

長知識了。

補字數、補字數、補字數、補字數、補字數、補字數、補字數、補字數、補字數。

檢舉 回應

一般用戶

等級6

資深大大

hsiang12132015-9-12 07:54

android手機相較於PC還在萌芽階段,希望google能進步把android帶到更成熟的境界~

★HTC論壇二週年生日快樂★
因為HTC MIT,處處有創新讓我愛上HTC~


我的品牌大使碼
8355612
檢舉 回應

分享