為什麼 Android 因為過於「碎片化」而飽受詬病,但 Windows 卻沒有類似困擾?

Windows 不也跑在千千萬萬各種不同的硬體組合起來的平台上么?

換句話說,為什麼一張Windows光碟幾乎可以裝在所有電腦上(硬體不要太過時),而Android就做不到呢?


從硬體上講,Windows 機器的屏幕足夠大,軟體可以以最小解析度(如1024 * 768)運行在各種機器上而不影響用戶視覺,屏幕上可以有很多空白空間;Android 機器屏幕太小,在 854 * 480 的機器上以 320 * 480 的解析度運行 App 會得到一個非常奇怪的視覺體驗,基本上看不清。

Windows 的發展歷程中硬體的發展也是漸進式的,每個時期的解析度比較統一,Microsoft 有足夠的時間去改變 Windows 適應硬體的發展,同一時期內 Windows 機器的解析度基本上都是相似的;而 Android 硬體發展過快,硬體性能在幾年時間內就有了翻天覆地的變化,Google 和終端用戶都沒有足夠的時間去適應每一代硬體的發展。

從系統上來說,Windows 的開發牢牢控制在 Microsoft 手上,沒有廠商自主研發這一說,MS 一直非常努力的保持系統 API 的統一性和向前兼容,雖然這客觀上導致了 Windows 非常臃腫的現實,但很好的避免了系統的碎片化,對開發者還算比較友好。

而 Android 發展過快、承擔了過多的歷史責任(Feature Phone 全面向 Smart Phone 過渡),導致 Android 在自身並不成熟的情況下被大量的推向用戶,這樣就導致每一代的 Android 都跑在大量用戶的各種規格的硬體上,很多系統上的變化導致舊的硬體無法運行新的系統,使得原生 Android 本身就在大的版本上分化;雪上加霜的是,每一代的 Android 都有大量的第三方廠商和民間團隊對其進行二次開發,導致每一代的 Android 也分裂成各種定製的版本。


從我的角度理解,Android之所以因為「碎片化」遭到詬病,是因為Android碎片化之後,給開發者增加了不少開發上的成本和麻煩,在Windows下,這樣的問題就會很小。因為Android目前還主要用於移動終端,Window的概念被弱化了,除了彈出對話框,基本每個界面都是佔滿全屏的,也就是說,設備的解析度決定了應用界面大小。因此,在布局界面的時候,開發工程師和UI設計師需要根據不同的解析度,調整界面各個控制項的位置,間距,大小等,儘管Android針對「碎片化」問題為應用的適配能力提供了一些解決方案,但中間還是給開發人員帶來了不小工作量。而Windows的環境則更加強調Window的概念,每個應用都被視為是在獨立的窗口中,則是和屏幕的解析度沒關係的,因此,開發一個Windows應用,不會像開發Android應用那樣,需要特別關心解析度。

相信大多數程序猿都知道,Framework API是上層應用與系統通信的關鍵橋樑,API的穩定性直接影響著上層應用的穩定性,因此,要想保證上層應用能夠在各個設備上穩定運行,首先要保證API是穩定。Windows是個封閉的操作系統,就是訂製應該也是MS自己根據合作廠商需求訂製(我猜的=。=),因此API的穩定性得到了保證。而Android作為一個開放式的移動操作系統(其實我一直把它作為一個移動操作系統的基礎框架),自然也免不了被各個廠商定製化,但因為是開源的,廠商自然會選擇最直接的手段訂製——改源碼,所以,API的穩定性也就被這種破壞性的訂製給削弱了,進而,也就很難保證上層應用的穩定性,導致同個版本的應用運行在不同廠商的機型上,有出現不同的問題甚至崩潰。但應用的問題不可能讓用戶來買單,因此,為了保證應用的穩定性,開發的不得不針對不同機型(至少是市場上主流的機型)逐一排查,這也給開發的增加了不少成本和工作量。

再而就是Android的App市場環境,就是一個Android應用所帶來的收益不大。相信這在一定程度上也影響了Android開發者對Android投入的熱情與精力,誰也不願做吃力又不討好的事吧。


你這個問題的問的有點怪啊,要不改改吧。看標題以為你問的是手機操作系統,再看副標,感覺又像是說是PC操作系統。

iOS和Windows Phone系統都是封閉系統,完全由原始開發商自己維護,不允許第三方廠商做任何改動。

對於iOS生態圈而言,Apple有軟硬體的設計製造能力,什麼都是自家造,這也是一貫的策略。

而對於Windows Phone而言,Microsoft沒有與之對稱的硬體設計能力,而且市場發展和自身發展的考慮也不允許它去收購IC設計商來完全自建生態圈,所以它是自己設計軟體,但對於硬體廠商有比較嚴格的規格標準,機器配置低了也玩不起來,況且Windows Phone現在也沒發幾個版本呀。

Android本來就是以Google為首的34家廠商組成的開放手機聯盟的產物,為了滿足各方的要求,那當然是越開放越好,對各種硬體要求越低越好。而且從誕生開始,版本頻繁升級,許多第三方廠商又紛紛進行自定製改造,不亂才怪。

這种放任,除了Google之外,對其它廠商、開發者和消費者而言,都是一種傷害和折磨。Google用這種遍地開花的策略,讓自己獲得了對抗Apple的iOS系統的能力,雖然效果上要差一些,但以後不是沒有機會。再說了,從一直以來的觀察來看,Google靠隱藏在Android背後的服務和移動廣告來延伸自己的影響力,和賺取利潤,目前它也做到了,至於別人怎麼賺錢,他應該不關心。


我覺得主要是內核的問題,解析度倒無所謂,你看windows 多少種解析度,多少種硬體搭配,AMD INTER

什麼什麼 亂七八糟的,但是你沒看到過那台機器上玩的DOTA效果是不同的吧 當然除了流暢方面,主要內核不變 API不改變 硬體都是按同一個思路來對二進位碼進行解析運行,不同的是控制如何運行的內核


100個Android手機製造商拿到Android內核之後,可以製造出100種搭載不同硬體平台、界面的Android手機,雖然是基於Android的,但實際上,已經不再是原來的Android了,經過各種改造之後,已經變成100個「獨立」的Android ,這就是碎片化。

這100個Android手機的運行環境完全不一樣,即使是搭載完全相同的硬體,不同品牌的機器,運行速度,軟體兼容性都會有區別,這是廠商們各自改造的結果。

摘自百度知道http://zhidao.baidu.com/question/414410650.html


windows的適配性低?

經常各種軟體在一台pc上不能運行,另一台就可以;

經常就win32錯誤,內存讀取錯誤,藍屏……;

軟體需要什麼framework環境,哪個用戶知道這是什麼東西;

遊戲更是要對不同硬體性能進行適配,各種黑屏跳出,導致很多遊戲只出主機版;

……

相比macOS,windows平台算是混亂之王了,這種混亂不是技術能解決的,而是需求的多樣性(成本、樣式、用途等)導致。所以,android也必然步其後塵。


推薦閱讀:

在XP挑戰賽中,這些安全軟體里,360 真的如新聞宣傳中所說,沒被黑客攻破?
Windows 的註冊表是個好的設計嗎?
Microsoft Windows 算是一個好系統嗎?
如何評價「微軟開發者解釋為什麼 Windows 內核落後於 Linux」一文觀點?
Windows 10 For Mobile的Aow與Iow計劃將對Windows生態產生什麼影響?

TAG:A和B有什麼不同 | MicrosoftWindows | Android開發 | Windows7 | Android |