當前位置: 華文問答 > 數碼

Android 做到 iOS 如絲般柔滑的過渡動畫真的很難嗎?

2019-12-11數碼

雖然這樣說會被很多人罵,但是還是先說結論:Android使用的渲染引擎Surface爛!你看谷歌自己都不用這麽爛的渲染引擎,Flutter用chrome引擎日常渲染自己的動畫多流暢,能在iPhone 4s上跑60幀哦,能在Galaxy S3上跑六十幀哦。言下之意是什麽???

開個玩笑,雖然是玩笑,但是結論還是不變。原因並不是谷歌不努力或者Android組水平低而是Linux那個整塊性核心設計(其實Linux壓根就沒有一個「有著給正常人類使用的使用者介面」的發型版吧)。谷歌重新開機爐竈搞Fushia有很大一部份原因就是Linux的掣肘越來越嚴重。看一張Android渲染架構:

Linux開源使得谷歌為了保護OEM不得不引入一個HAL層,畢竟你谷歌開源,我OEM可不願意開源我的驅動。這使得谷歌無法真正意義上推出一個高效的數據同步模組,用谷歌的原話就是:

Since Android graphics offer no explicit parallelism, vendors have long implemented their own implicit synchronization within their own drivers. This is no longer required with the Android graphics synchronization framework. See the Explicit synchronization p for implementation instructions.

多層漢堡結構帶來的效能損失,相容性的要求加上整塊性核心本身即時性就差就是得無論谷歌怎麽改,同等硬件水平,圖形效能就是比其他平台差。歸根結底,Linux最初被大規模采用的時候方向就是高效能計算,然後一路技能樹就是這麽點的。現在非要讓Linux來保證高可靠性和高即時性,真的是強人所難啊。具體可以看到Android雖然最近支持了vulkan API,但是實作方式卻……

還有一方面的願意很好理解,谷歌不掌控硬件,沒辦法像蘋果一樣可以魔改底層硬件API。這部份的損失有多大可以參考同等硬件指標下,註意是同等硬件指標下遊戲主機完爆PC。同時,因為沒有統一的介面也就因為著最佳化嚴重依賴開發者,看看吃雞這一路的最佳化歷程你就知道這有多艱難。除了遊戲有多少Android App有專門的效能最佳化組?

動畫卡了為什麽要去最佳化,只要罵iOS動畫是騙人不就完了?Flutter?那玩意根本沒人用!閑魚?正常人誰他媽上閑魚!滾!