手機跨平臺方案介紹作者:
Loning 來源:
博客園 發(fā)布時間: 2011-05-14 21:55 閱讀: 3520 次 推薦: 1
原文鏈接引述
現(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ā)有許多種方式,在文獻(xiàn)中可查到有下列方式。
方案名稱
簡述
特點
性能
方案開發(fā)難度
使用難度
使用成本
案例
動態(tài)腳本
使用腳本語言進(jìn)行動態(tài)載入或?qū)μ囟ǖ臄?shù)據(jù)格式進(jìn)行解析,類似于瀏覽器工作方式:
wml
javascript
xml表單
私有數(shù)據(jù)格式
開發(fā)快,靈活配置。性能差,表現(xiàn)形式有限
30
40
30
40
msn/fetion/qq 內(nèi)置wap瀏覽器使用服務(wù)器把網(wǎng)頁轉(zhuǎn)換成wml,客戶端進(jìn)行解析展示。
移動MM使用xml進(jìn)行界面定義
微軟oneapp 使用 java script進(jìn)行服務(wù)武器編寫,客戶端進(jìn)行展示和交互
很多電子閱讀軟件都使用自有的格式在服務(wù)器端進(jìn)行編寫,客戶端進(jìn)行展示
私有跨平臺
公司內(nèi)部使用,進(jìn)行很"粗略"的封裝
使用范圍受限
90
120
70
60
不公開的內(nèi)部引擎,比如Gameloft的游戲引擎
很多公司的UI引擎
針對特殊的領(lǐng)域,比如Poc(按鍵通話對講機)引擎
抽象中間件
有自己的編程標(biāo)準(zhǔn),完善的文檔和規(guī)范化的接口
學(xué)習(xí)成本高,使用平臺所限,在不損失性能得前提下解決特定的問題
85
300
100~150
50
Nokia的Qt
沃勤的 mtk中間件
Brew 開發(fā)接口
虛擬機
使用字節(jié)碼解析執(zhí)行
開發(fā)容易,跨平臺性好,但性能差,擴展難,維護(hù)成本高
50
有開源方案,自己開發(fā)成本很高
60
60
標(biāo)準(zhǔn)的j2me虛擬機
開源的llvm, eve, flash最新版使用llvm
私有的,掌上明珠自己開發(fā)了虛擬機用于開發(fā)游戲
代碼轉(zhuǎn)換
使用java轉(zhuǎn)換成c代碼,再編譯執(zhí)行
使用標(biāo)準(zhǔn)j2me接口開發(fā),一份代碼,好維護(hù),但目前還沒官方公開版
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ā)方式。接下來本文將會介紹幾種跨平臺方式下進(jìn)行跨平臺開發(fā)的方案。
動態(tài)腳本
現(xiàn)在比較火的使用動態(tài)腳本的跨平臺開發(fā)方案大部分是即基于HTML5的。事實上即對傳統(tǒng)瀏覽器的一種擴展,提供了離線瀏覽功能、對本地設(shè)備的訪問功能等。但由于大部分編碼是使用腳本語言,因此性能較低。如果做圖片處理等應(yīng)用,則缺少相應(yīng)成熟庫支持。
RhoMobile - one codebase, every smartphone
基于HTML5及Ruby構(gòu)建跨平臺應(yīng)用的工具,號稱支持iPhone, Windows Mobile, RIM, Symbian and Android。同時提供開發(fā)、同步、源碼管理等全方位產(chǎn)品。具有IDE。
然而,當(dāng)仔細(xì)看開發(fā)文檔的時候,發(fā)現(xiàn)對Symbian提都不提了,實在是一件讓我的N95傷心的事情(
http://docs.rhomobile.com/rhodes/introduction)。況且作者對Ruby了解甚少,也就沒有進(jìn)一步嘗試。
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)用還可以交叉編譯到所有的目標(biāo)平臺上。
(2)
PhoneGap
PhoneGap是一款開源的手機應(yīng)用開發(fā)平臺,它僅僅只用HTML和JavaScript語言就可以制作出能在多個移動設(shè)備上運行的應(yīng)用。PhoneGap將移動設(shè)備本身提供的復(fù)雜的API進(jìn)行了抽象和簡化,提供了一系列豐富的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)換直接生成目標(biāo)平臺的應(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)工作,不過,恐怕還需要相當(dāng)長的時間來發(fā)展。
虛擬機
我認(rèn)為虛擬機其實是很尷尬的,對多平臺的支持遠(yuǎn)不如上文提到的幾個強悍,編碼過程中要考慮的也比較多。
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)注的平臺。
我們的團(tuán)隊近期在做一些個項目,也還在討論跨平臺的方案。我們還是比較關(guān)注手機程序的Native特性的。譬如Symbian用戶更喜歡sis,而不喜歡jar。
總而言之,跨平臺遠(yuǎn)沒想象中的那樣靠譜。
引用作品
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.
作者:馬昊伯
出處:
http://loning.cnblogs.com/個人網(wǎng)站:
http://loning.wiisio.com/本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,否則保留追究法律責(zé)任的權(quán)利。