当前位置: 华文问答 > 数码

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?那玩意根本没人用!闲鱼?正常人谁他妈上闲鱼!滚!