|
引述
現(xiàn)在手機平臺種類繁多,主流平臺有Symbian、ios、Android、WM6.5、WP7以及中國山寨機所普遍使用的MTK,展訊, MSTAR。
作為開發(fā)者來說,特別是學(xué)生,要做一款軟件支持如上平臺,實在是一件遙不可及的事情。
不同種類的應(yīng)用,成功的條件是不同的。有些應(yīng)用是以質(zhì)取勝的,有些應(yīng)用則在質(zhì)的同時必須要有足夠的用戶群(如LBS應(yīng)用相關(guān)),也就是量的優(yōu)勢。因此,不同應(yīng)用對于多平臺支持的需求是有差異的,這也是本文探討如何跨平臺開發(fā)的價值所在。
跨平臺開發(fā)有許多種方式,在文獻中可查到有下列方式。
方案名稱 | 簡述 | 特點 | 性能 | 方案開發(fā)難度 | 使用難度 | 使用成本 | 案例 |
動態(tài)腳本 | 使用腳本語言進行動態(tài)載入或?qū)μ囟ǖ臄?shù)據(jù)格式進行解析,類似于瀏覽器工作方式: wml Javascript xml表單 私有數(shù)據(jù)格式 | 開發(fā)快,靈活配置。性能差,表現(xiàn)形式有限 | 30 | 40 | 30 | 40 | msn/fetion/qq 內(nèi)置wap瀏覽器使用服務(wù)器把網(wǎng)頁轉(zhuǎn)換成wml,客戶端進行解析展示。 移動MM使用xml進行界面定義 微軟oneapp 使用 Java script進行服務(wù)武器編寫,客戶端進行展示和交互 |
私有跨平臺 | 公司內(nèi)部使用,進行很"粗略"的封裝 | 使用范圍受限 | 90 | 120 | 70 | 60 | 不公開的內(nèi)部引擎,比如Gameloft的游戲引擎 很多公司的UI引擎 針對特殊的領(lǐng)域,比如Poc(按鍵通話對講機)引擎 |
抽象中間件 | 有自己的編程標準,完善的文檔和規(guī)范化的接口 | 學(xué)習(xí)成本高,使用平臺所限,在不損失性能得前提下解決特定的問題 | 85 | 300 | 100~150 | 50 | Nokia的Qt 沃勤的 mtk中間件 Brew 開發(fā)接口 |
虛擬機 | 使用字節(jié)碼解析執(zhí)行 | 開發(fā)容易,跨平臺性好,但性能差,擴展難,維護成本高 | 50 | 有開源方案,自己開發(fā)成本很高 | 60 | 60 | 標準的j2me虛擬機 開源的llvm, eve, flash最新版使用llvm 私有的,掌上明珠自己開發(fā)了虛擬機用于開發(fā)游戲 |
代碼轉(zhuǎn)換 | 使用Java轉(zhuǎn)換成c代碼,再編譯執(zhí)行 | 使用標準j2me接口開發(fā),一份代碼,好維護,但目前還沒官方公開版 | 84 | 300 | 60 | 70 | 棱鏡方案 Fetion 3.0 正在開發(fā)的聯(lián)通應(yīng)用商店 目前都還是公司內(nèi)部使用 |
備注:
性能:我們以純本地代碼開發(fā)出來的程序性能為100做基數(shù),其他使用相對百分比。
難度:我們以純本地代碼開發(fā)的難度100做基數(shù),其他使用相對百分比。
棱鏡方案由北京創(chuàng)世互動總經(jīng)理張盛毅介紹,目前僅在北京創(chuàng)世互動公司內(nèi)部使用,期待盡快與眾多開發(fā)者見面。
(1)
我們可以看到,使用動態(tài)腳本、虛擬機及代碼轉(zhuǎn)換等方式是比較廉價的跨平臺開發(fā)方式。接下來本文將會介紹幾種跨平臺方式下進行跨平臺開發(fā)的方案。
動態(tài)腳本
現(xiàn)在比較火的使用動態(tài)腳本的跨平臺開發(fā)方案大部分是即基于HTML5的。事實上即對傳統(tǒng)瀏覽器的一種擴展,提供了離線瀏覽功能、對本地設(shè)備的訪問功能等。但由于大部分編碼是使用腳本語言,因此性能較低。如果做圖片處理等應(yīng)用,則缺少相應(yīng)成熟庫支持。
RhoMobile - one codebase, everysmartphone
基于HTML5及Ruby構(gòu)建跨平臺應(yīng)用的工具,號稱支持iPhone, Windows Mobile,RIM, Symbian and Android。同時提供開發(fā)、同步、源碼管理等全方位產(chǎn)品。具有IDE。
然而,當仔細看開發(fā)文檔的時候,發(fā)現(xiàn)對Symbian提都不提了,實在是一件讓我的N95傷心的事情(http://docs.rhomobile.com/rhodes/introduction)。況且作者對Ruby了解甚少,也就沒有進一步嘗試。
Appcelerator
Appcelerator的Titanium是使用HTML、JavaScript及CSS等Web技術(shù)構(gòu)建移動(iPhone、Android及iPad)與桌面(Windows、OS X及Linux)應(yīng)用的平臺。此外,還可以使用Python、php及Ruby構(gòu)建Titanium的桌面應(yīng)用。這些應(yīng)用還可以交叉編譯到所有的目標平臺上。
(2)
PhoneGap
PhoneGap是一款開源的手機應(yīng)用開發(fā)平臺,它僅僅只用HTML和JavaScript語言就可以制作出能在多個移動設(shè)備上運行的應(yīng)用。PhoneGap將移動設(shè)備本身提供的復(fù)雜的API進行了抽象和簡化,提供了一系列豐富的API供開發(fā)者調(diào)用,只要你會HTML和Javascript或者Java語言,就可以利用PhoneGap提供的API去調(diào)用各種功能,PhoneGap就能讓你可以制作出在各種手機平臺上運行的應(yīng)用,這對移動應(yīng)用開發(fā)者來說無疑是個福音。
(3)
這個對Symbian的支持也很不好,官方的Symbian demo在我的N95上無法跑。
代碼轉(zhuǎn)換
由于代碼轉(zhuǎn)換直接生成目標平臺的應(yīng)用程序,因此效率比較高。然而如引文中提到的,大部分項目都是私有的。
MoSync
MoSync是一個開源的C/C++的集成開發(fā)環(huán)境。可以簡化移動開發(fā)程序的開發(fā)難度,并且能夠大大提高移動程序開發(fā)人員的工作效率。其主要優(yōu)點:開源,跨平臺Android, j2me, Symbian等,易于移植。
(4)
官方的DEMO很成功的在我的手機上跑了起來,還有幾個是OPENGL的。不過極其不爽的是,對中文的支持性很糟糕。MoSync所提供的UI系統(tǒng)壓根沒考慮對中文的支持,有國人問如何顯示中文,MoSync的回復(fù)讓我感到很雷,要制作一個一個byte的中文字符字體。難道他們以為漢字是拼音么。
不過MoSync正在做native ui的相關(guān)工作,不過,恐怕還需要相當長的時間來發(fā)展。
虛擬機
我認為虛擬機其實是很尷尬的,對多平臺的支持遠不如上文提到的幾個強悍,編碼過程中要考慮的也比較多。
J2ME
iPhone壓根不支持。Android則自己搞了套,估計合理利用設(shè)計模式,改動也不需要太大。Symbian還是對這個很友好的,WM6.5要裝虛擬機,WP7未知。
在編碼過程中,由于J2ME也沒有為多種設(shè)備提供一個十分統(tǒng)一的訪問方式(如加速度傳感器等),所以需要考慮的事情也比較多。
Silverlight、MonoDroid、 MonoTouch
這個就壓根談不上跨平臺了,UI都是要各自寫一套,而且后兩者也特別臃腫。
值得一提的是,有個基于C#的游戲引擎delta engine,可以在PC、WP7、Android及iPhone上跑。
Skyengine
這里介紹一下這個,其實也是最近斯凱的老大宋濤來我們天大才聽說的。之前對山寨機一直沒有關(guān)注過。
斯凱SDK處理了MTK、展訊、MSTAR平臺的差異性,封裝了統(tǒng)一、易用、功能強大的API。功能涵蓋了圖形文字處理,聲音,文件IO,網(wǎng)絡(luò)通信等;同時完美支持THUMB指令,插件機制,圖形加速等高級特性。斯凱SDK將使你輕松開發(fā)出優(yōu)秀的OTA應(yīng)用。
開完會后過去聊,說已經(jīng)放出Android的來了,但是后來在斯凱的網(wǎng)站找也沒找到。估計還在內(nèi)部測試,不過如果要做山寨機的平臺的話,可能用這個會速度好多。
小結(jié)
扯這么多,最后也沒扯出個真正的Write once,run anywhere的巨無霸。開發(fā)過程中,應(yīng)該有機的選擇幾種跨平臺技術(shù),覆蓋自己所關(guān)注的平臺。
我們的團隊近期在做一些個項目,也還在討論跨平臺的方案。我們還是比較關(guān)注手機程序的Native特性的。譬如Symbian用戶更喜歡sis,而不喜歡jar。
總而言之,跨平臺遠沒想象中的那樣靠譜。
引用作品
1. 一塵. 手機跨平臺開發(fā)五大方案對比. 博客園. [鏈接] http://www.cnblogs.com/wmj/archive/2010/11/29/1891086.html.
2. InfoQ. Aptana被Appcelerator收購. [鏈接] http://www.infoq.com/cn/news/2011/01/aptana-appcelerator.
3. 跨平臺開發(fā):初探PhoneGap移動開發(fā)框架. [鏈接] http://mobile.51cto.com/Android-229213.htm.
4. liuhuigx. MoSync: 跨多平臺Android, j2me, Symbian, wm的開發(fā)工具。. [鏈接] http://www.iteye.com/topic/600808.
作者:馬昊伯
個人網(wǎng)站: http://loning.wiisio.com/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,否則保留追究法律責(zé)任的權(quán)利。
it知識庫:手機跨平臺方案介紹,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。