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的興亡基本上是得開發者得天下。只有容易學習并且功能強大的系統才能贏得勝利,相信這一點在智能手機開發競爭中依然適用。