谷歌工程師詳解Android平臺的硬件加速真相
當相對開放的 Android 平臺與嚴格封閉的 iOS 系統相比的時候,一個重要的不同就是 iOS 的應用運行起來更加流暢。這是 Android 自出生以來一直在追求的一點。日前 Google 工程師 Dianne Hackborn 在 Google+ 郵件中闡述了 Android 硬件加速技術的一些情況,由此大家可以看到,Android 硬件加速技術并沒有大家想象的那么完美,這也許正是其用戶體驗不及 iOS 的一個主要原因。
現狀:描繪新元素才啟用硬件加速
與我們以往聽到的完全不一樣了吧?Android 在1.0版本之后就開始對 2D UI 進行一些硬件加速。每天我們看到的許多 Android 動畫效果就是硬件加速技術的體現。比如,菜單彈出對話框和通知欄都是這樣的。
Android 系統所有的“窗口合成”都是基于硬件加速的 GPU 渲染產生,我們可以這樣理解,在屏幕上描繪任何新的元素,都會啟用硬件加速。如果沒有發生重繪變換,比如按鈕本身高亮或者按下狀態,這些變化就是通過軟件 渲染。但我們點擊一個菜單按鈕,所產生的覆蓋效果是就由 GPU 完成的。
圖:比肩 iOS 的 3D 游戲效果是每一個 Android 粉絲的期待
創新:“完整”的硬件加速技術
那新的 Android 冰淇淋三明治(ICS)又有哪些不同呢?Hackborn 透露,我們將會在 Android 4.0 中看到“完整”的硬件加速技術,所有的 UI 元素和第三方的應用程序都將可以通過 GPU 渲染。盡管 Android 3.0 擁有相同的技術,但現在開發者可以指定硬件渲染的目標,由此推動4.0的功能更進一步。Google 正鼓勵開發者更新應用程序,加入硬件加速標簽,從而完全支持新的硬件加速特性。
這很可能會讓開發者花費一些時間去調整應用以適應新的 ICS 系統,但谷歌也設計了相應的設置選項來應對硬件渲染。Hackborn 警告說,在程序未經測試前,有可能會在一些方面造成影響。這也成為 Android 硬件加速首先要應對的問題。
眾所周知,GPU 渲染應用程序的動畫效果和 UI 時,系統肯定會消耗一定內存。比如渲染一個進程加載 OpenGL 驅動大概需要 2MB 系統內存,但運行時就會達到 8MB。RAM 有限這時就成為了一個大問題,當運行的應用程序不斷增加,系統將不得不關閉更多的后臺任務去節省內存。這樣的結果可不是開發人員和用戶愿意看到的。
圖:花哨的 UI 界面如何更好的節省內存一直是個大問題
未來:硬件提升將帶來流暢體驗
開發人員應當注意到,Android 在硬件加速技術的開發上有很多的特殊技巧。首先是界面的獨立窗口可以復制到一個統一渲染層實現更高效的 GPU 訪問。Andriod 也會將背景渲染成一張大的位圖,這樣在用戶滾動屏幕時不需要重新渲染。
同時,還應當注意到,目前的移動設備硬件在面臨嚴重的 GPU 渲染負擔時,會使整體性能出現下滑。但我們放眼未來,伴隨著 GPU 和顯存帶寬的不斷升級,Android 必然會很快的超過 60FPS,并有望在用戶操作體驗上超越 IOS。