stevenyao

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  22 随笔 :: 1 文章 :: 67 评论 :: 0 Trackbacks
Symbian的传统UI已经使用了10多年了,最底层的Symbian UI Framework叫做 CONE,仅是对 RWindow的简单封装,另外附带一个CoeEnv作为App的运行环境。没有控件系统,没有图形效果,最早连透明都不支持。

后来Symbian基于 CONE实现了 UiKon,扩展了原来的CONE,并添加了简单的控件,现在S60上的 StatusPane和Softkey也出现了,这基本奠定了键盘模式的S60手机 Ui的基本框架。

但是这仍然无法满足产品的需求,产品需要更高级的控件支持,比如SettingPage, Toolbar, Query等等, 另外这些控件要支持多语言多种屏幕尺寸键盘布局,以及theme系统。
于是 Avkon就产生了,Avkon其实和Symbian公司就没什么关系了,Avkon完全是Nokia自己开发的,但是开发过程中由于种种原因,有些代码就是直接复制Symbian的类然后在里面修改的。
这就导致一个问题,Avkon并不独立于Symbian UI,很多地方就高度耦合的,比如 Avkon 和 Eikcoctl都是控件库,但是却是互相链接的两个 DLL,这种诡异的设计就好象是,Eik系统开发到一半发现DLL太大了,就另外创建一个avkon继续开发,但是原来的代码一部分就留在Eik了,所以还需要保持互相的链接依赖。

可见avkon的开发并不是一个开始就是有完善的计划的framework,而是随着产品的需求一步步走到现在的,这也就是avkon的API接口诡异,使用不方便的原因。
作为UI framework来说,avkon的用户非常多,这世界上恐怕只有 MFC和VCL才能和他相比,但是这样一个重要的UI Framework设计质量却是非常差的。

庆幸的是Nokia决定收购了TrollTech的Qt,这恐怕是Nokia 10年来最英明的收购了,Qt虽然是个只有200多人的小公司,年营收才几千万欧元,但是在软件业界的影响力要大得多。
Qt是 KDE的基础库,这就影响了Linux世界的一半的桌面系统,Qt的Signal/Slot系统的设计思想也影响了后来很多的Framework。Qt也是目前唯一跨越了几乎所有平台的Framework,因为Gtk没有Symbian。

收购后的一年,Nokia主要所作的是把 Qt移植到Symbian,这个工作并不容易,因为Symbian不同于其他系统,Linux/Unix/Windows都是支持POSIX的,而Symbian只是部分支持POSIX,移植Qt之前还要先完善Symbian上的OpenC。Symbian上的异常处理与众不同,是Leave/TRAP,Symbian上是单heap结构,Symbian上的模拟器是用单进程模拟多进程所以不支持 WSD(Writable static data)。我相信Qt的工程师是克服了很多困难的,据说也有大量Symbian的工程师参与其中。

Symbian单单有了Qt还不能说是有了新的UI系统,因为只是Qt写出来的UI就像Windows程序一样,并不适合手机上的操作,还需要一套基于Qt之上的针对手机操作习惯的UI Framework,这就是Orbit。Orbit是一套基于Qt的GraphicView的UI 系统,提供了应用程序管理,控件系统(Widget),输入法,图形动画效果,多语言支持,等等。

尤其是图形动画效果,基本接近iPhone的水准了(超越还谈不上,也就是接近),这得益于Symbian的NGA,新一代图形架构。这是一次巨大的变革,Symbian把自己的图形系统构建在了OpenVG的基础之上,充分利用了硬件加速效果,把窗口系统和图形系统分离了,从而在应用开发上,可以提供更炫的图形动画效果,并也可以有很好的性能。

Orbit有一点是很强大的,也是因为借助了Qt的跨平台特性Orbit也是跨平台的,就是Orbit程序如果不涉及手机特性的开发是可以在Windows上完成的,可以不需要模拟器。就是说开发者可以在开发UI的时候写Windows程序,只有需要手机特有功能的时候比如电话短信,才需要到模拟器去调试。当然也不只是Windows,你同样可以在Linux/MacOS上写Orbit程序,只要是Qt能去的地方Orbit都可以。所有在PC系统上的开发调试工具对于Orbit都是可以用的,你可以用VC开发,也可以用那个Emacs、VI开发,这将大大提高手机程序的开发效率比传统的S60高10多倍,比现有的Android/iPhone也至少高一倍。

比如,我们都知道在Qt上创建一个最简单的程序只需要4行代码,在Orbit上一样也是4行,其实就是Qt程序的 QApplication QMainWindow类换个名字就好了。如果需要放个按钮只要再写两行。只要这6行代码,你的程序就可以到手机上运行了,可以看到一个只有一个按钮的程序,是不是比任何手机系统的开发都容易呢。

Orbit会成为未来S60手机上的应用开发Framework,原来的Avkon系统很可能会被抛弃掉,Orbit继承了Qt的几乎所有东西,所以懂Qt的人可以很快掌握Orbit开发。这也解决了多年来Symbian开发学习曲线陡峭的问题,相信会有更多更好的开发人员投入到S60。从过去PC系统上20年来的历史看,Framework的兴亡基本上是得开发者得天下。只有容易学习并且功能强大的系统才能赢得胜利,相信这一点在智能手机开发竞争中依然适用。
posted on 2010-01-17 14:47 姚冬 阅读(2899) 评论(4)  编辑 收藏 引用

评论

# re: Symbian 的自我救赎,新一代UI设计 Orbit 发布 2010-01-17 18:43 diverger
我可以转载么?  回复  更多评论
  

# re: Symbian 的自我救赎,新一代UI设计 Orbit 发布 2010-01-17 21:56 Liang Qi
纯Qt通过Style也可以显示出和系统原有控件相似的风格
Orbit不一定是必须的
  回复  更多评论
  

# re: Symbian 的自我救赎,新一代UI设计 Orbit 发布 2010-01-26 11:40 忽悠
说开发速度比android和iphone快是忽悠人吧  回复  更多评论
  

# re: Symbian 的自我救赎,新一代UI设计 Orbit 发布 2010-03-09 10:11 凡客诚品
很好1236456  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理