「M8让我们体会到了早年作为一个小厂商的艰辛。」
这是我离开程武办公室前,他对我说的最后一句话。
4.WinCE的重塑之旅
07 年当 JW 决定开发智能手机的时候,市面上只有塞班和 WindowsMobile,iOS还处于萌芽期,Android 还没有形成生态。
塞班处于当时封锁的自我闭环中,微软的 WindowsMobile 则由于高额的授权费让魅族望而却步。WinCE 是当时魅族最恰当的选择,较低的专利费,较好的可移植性,完整的底层架构。
「我们别无选择,WinCE 是唯一的可能。」
这是朱国志(Flyme软件开发工程师)的回答。早年朱国志曾在 TP-LINK 负责交换机的开发工作,有非常强的嵌入式操作系统的开发能力,他是白总招揽的第一位嵌入式系统的开发高手,2007 年 1 月,朱国志正式加入魅族,接下了 WinCE 的软件开发工作,他没有考虑到太多就踏上了从无到有的第一步。
「我们知道踏出了 WinCE 这第一步就没有回头路了,我们给微软交了高额的协议费,花了 2 个月来制定大致的系统开发的思路方针,如果项目一旦停下来,可能就真的停下来了。」
「当时和我们恰接的微软工程师总显的过于保守,很多我们希望微软能够开放一部分源代码来帮忙解决的问题,都遭到了微软工程师的拒绝。于是很多想在 M8 上实现的功能或者需要去解决的硬伤最终只能硬着头皮再想其他的方法。」
「开关机、桌面、锁屏、通知栏...... 包括这中间的一些框架都是由我负责的。」
在 WinCE 的开发中,朱国志遇到了许多远超出他预期的困难。由于 WinCE 系统并不是面向手机端而开发的,朱国志和他的同事在 WinCE 进行改造的过程中需要对系统 Shell 的部分进行重写。
「在 WinCE 上我们重新加了一个桌面的 Shell,来实现更加适合手机的操作,并把很多过去繁杂的 WinCE 上的按钮与操作全部删减,重制了一个我们所设想的版本。」
「M8 上的 GPU 性能太弱,造成了桌面的滑动的卡顿。我们尝试了很多方案,但在 M8 上滑动效果都很卡,为这个整个团队苦恼了很久。」
有着多年开发经验的朱国志在如何保证 WinCE 上的桌面滑动流畅性上,遇到了非常大的困难。M8 采用的 6410 的 CPU 在当时还处于领先水平,但当时其搭载的 GPU 性能偏弱,在图形渲染能力上很难满足 WinCE 的性能需求,于是朱国志的团队在流畅度的软件算法探索上,挤尽了脑汁。
「我们尝试了将近三个月的时间,由于没有吃透 WinCE 字体与图标的渲染技术,在初期的开发过程中,其桌面滑动只能保证 10-20 帧左右的速率,我们花费了大量的精力在如何更合理的调度每一帧的动画上。」
「在没有缓存技术的情况下,我们先写了桌面图片的缓存技术,发现滑动由之前的 10 帧改善到了 17-18 帧,但离 24 帧以上的流畅及格线依然有距离,在摸索了 1 个月之后,我们才发现 Wince 在文字渲染上也非常消耗资源,在之后又加入了文字缓存技术后才保证了桌面能有 24 帧的流畅度。」