Android有望結束碎片化

infoq發表於2014-08-20

  對於Android開發者來說,碎片化問題經常令他們痛苦不堪。iOS開發者只需要面對蘋果一家廠商的有限的幾種機型,並且這些機型的軟硬體全部掌控在蘋果手裡,而Android開發者就沒那麼幸運了,他們要面對的各種廠商製造的裝置,這些裝置可能有不一樣的螢幕尺寸,不一樣的晶片功能,搭載不一樣版本的作業系統等等。從Android主頁上的最新統計資料可以看到,Android 4.1-4.3目前還佔有超過一半的市場,最新的Android 4.4是20%左右,剩下的則由4.0、2.3和2.2等更老的系統共同佔據。

  GIGAOM上的一篇博文提到,開發一個Android應用程式往往意味著:

  • 為了相容更多的舊機器,你被迫使用舊版的SDK來適配儘可能多的舊裝置;
  • 大量的廠商製造了各種各樣螢幕尺寸的手機,它們搭載的作業系統版本有新有舊,底層硬體的能力也不盡相同。總之各種各樣你能想到的或想不到的;
  • 你的應用可能受眾有限,因為有些應用僅限某些裝置訪問。

  過去真是如此,但這一切或許正在改變。Google也早就已經意識到了這個問題,但似乎他們解決這個問題的方法不是像蘋果那樣掌控硬體,而是嘗試走另外一條路。

  Google早在2012年就引入了Play Service,這個元件會在後臺下載其他一系列元件,而這些元件是應用賴以執行的核心。手機搭載的作業系統版本不一?不要緊,因為它們都會強制安裝最新的Play Service。這篇博文中也提到:

Play Serice 5.0已經推送給包括從Android 2.3到Android 4.4的Android裝置。Google正在逐漸把一些Android核心功能、系統API剝離出系統,並加入到Play Service中,這意味著安裝有最新Play Service的裝置,應用就能執行自如。

  這看起來確實是解決碎片化的一個辦法,但如面對如此多的螢幕尺寸,這個方法似乎無能為力。看看Android開發者Russell Ivanovic如何解決這個問題。

  首先他認為,如果你想做得很完美,那麼Google提供的開發工具足以幫你適配每一種螢幕,只是你需要為每種螢幕建立佈局檔案。

  另外,他們建議的做法是:使用dp來定義佈局(dp是Android中一種虛擬的畫素單位,在執行的時候系統會根據螢幕密度把它擴充套件成真實畫素),這樣,所有的螢幕都化成有限幾種標準dpi的螢幕,你只需要為不同密度的螢幕準備不同資原始檔就可以了。你唯一需要考慮的是裝置的按鍵是實體的還是在螢幕上的,因為這會影響螢幕實際可用尺寸。

  Android官網上也有一篇文章給開發者介紹如何支援多種尺寸螢幕,仔細閱讀這篇文章,做好這項工作應該不難。

  可以看得出Google也覺得碎片化問題影響了Android的發展,他們也正在努力解決,但效果如何,讓我們拭目以待。

相關文章