天天看點

移動應用開發技術選擇六要素:慎重選平台

作者從平台環境、作業系統、裝置能力、雲端、應用類型、跨平台開發六大方面分享了其在移動應用開發中的技術選擇經驗。

這 是一個新的時代、新的機會。自從2007 年1月喬布斯揭開iPhone的面紗以來,移動時代的大潮滾滾向前,已經走過近5個年頭。這個産業正在從新生走向成熟階段。在這樣的産業時代背景下,各種 不同的系統平台,不同的技術路線,自然是層出不窮、迅猛發展。對于每一個投身于移動行業的軟體開發者而言,充分地了解和掌握各個平台的發展狀态,搞清楚各 種開發技術與方向的優劣,是關系到産品與自身發展的頭等大事。

平台選擇

從 2007年到現在,湧現出了不少面向移動裝置的作業系統平台。先不論原先已存在的Symbian和Windows Mobile系統,新的系統就有蘋果的iOS、Google的Android、Palm/HP的WebOS、Nokia的Maemo/MeeGo、三星的 bada,以及RIM新的基于QNX的PlayBook Tablet OS。

一個真正占有市場的平台才能吸引更多開發者為其開發更多應用,更多應用又能反過來替平台争取更多使用者,進而促進平台的進一步發展。正是由于平台與應用之間相輔相成的關系,使得平台的選擇成為開發者首要關注的重點。

對于開發者而言,一個移動平台的意義,并不隻是一個作業系統而已,它還包括了與之相聯系的整個生态環境。平台的市場占有率直接決定了應用能夠被多少消費者使用,平台本身又能帶給開發者多少回報。這些都是在平台選擇中必須考慮到的問題。

無疑,iOS和Android是目前占有市場佔有率最大的兩個平台。這兩個平台不但使用者衆多,擁有的開發者數量、應用數量和下載下傳量 也都遠遠高于其他平台。一些資料可以反映這種情況: 在今年最新的北美地區智能手機市場佔有率調查中,Android及其定制版占有了58.67% 的市場佔有率,iPhone占有14.67%,Symbian占有14.33%,BlackBerry占有9.2%,bada占有3.33%,而 Windows Phone僅占有1.67%的份額。

作為一個平台,iOS有以下幾大 特點:第一,iOS是一個相當一緻的系統。目前蘋果僅有三種運作iOS的裝置:iPhone、iPad和Apple TV。從API方面來說,這三種裝置的不同代産品各自的裝置屬性都相當固定,而各自的作業系統版本也都保持一緻,這對開發者來說是一件極其友善的事情;第 二,iOS系統本身具備了相當良好的,内建流暢的使用者互動實作。就算是一個照着教科書中規中矩寫出來的iOS程式,其使用者體驗也會不會差;第三,蘋果提供 了一個非常良好的iOS程式開發環境。隻有很少的功能是模拟器無法模拟而必須在真機上進行調試測試的;最後,蘋果本身的品牌也是一個相當有影響力的支援。

移動應用開發技術選擇六要素:慎重選平台

另 一個主要的平台就是Android。得益于Google對Android的開放(不向廠商收取授權費), 以及大大小小各種廠商的機海戰術,Android手機的占有量已經是第一位了。是以,選擇了Android平台就意味着選擇了最大的使用者群體。另 外,Android本身源碼的開放性,對于一些需要利用底層實作細節的開發者來說,是個很好的特性。而且從開發本身來說,Android 所采用的開發語言和環境, 相對來說比iOS 的門檻要低,這是它的優勢所在。但也正是因為Android的開放,造成了市場上Android裝置的規格特性各不相同,增加了應用開發中機型适配所帶來 的大量開發和測試工作。

除了iOS和Android這兩大巨頭之 外,Microsoft的Windows Phone 7從去年開始也大張旗鼓地開始發力。在WP7平台上,Microsoft仍然扮演着系統提供商的角色, 硬體生産仍然是各個廠商的事。但Microsoft為了保證使用者體驗的一緻性,對裝置的名額作了非常嚴格的規定。是以,目前WP7還沒有機型适配的問題。 在新的移動市場上,Microsoft顯然來晚了一步, 成為占有比較小的市場佔有率的競争者,這一點遠遠比不上iOS和Android。 另外,WP7提供了專有的Metro UI界面形式,展現了跟iOS和Android都截然不同的風貌,這對其是有益的。從開發本身來說,Microsoft為WP7開發者提供的工具有比較大 的限制。除了 Silverlight和XNA之外就沒有别的支援了。很多非Web Based的、非遊戲類應用無法在現有的平台上進行開發。這不能不說是一個弱點。

三者 之外,除了BlackBerry在北美地區的占有率較高以外,别的平台都隻占有少少的一點份額。BlackBerry的系統,已是一個落後整個産業十餘年 的東西,BlackBerry賴以生存的基礎是內建到系統中的push mail機制,而不是它的系統本身是先進還是落後。Symbian則是連Nokia自己都放棄的東西,不會對現在的開發者有多大的吸引力。webOS生不 逢時,空有良好的使用者體驗和很有特色的開發方式,卻最終被HP所抛棄。三星的bada則仿佛是其自身的一畝三分地,隻在wave系列中推出。

從 市場占有率來看, 開發者首選的平台無疑是iOS和Android了。除了已占有的市場佔有率,以及目前所能看到的發展前景之外, 對開發者來說,還有一點非常重要:這個平台對開發者的回報如何,對于開發者的支援如何。在這一點上目前蘋果比Google做得好。各種調查統計資料表明, 在iOS平台上的開發者收入要高于Android平台。另外,蘋果對從裝置到應用的嚴格控制雖然為人诟病,但也無可非議地為應用開發者建立了一個單一而良 好的環境。反過來,Google的開放政策變成了不管不問政策,由于沒有審查機制,導緻Android Market裡有很多品質低劣的應用,甚至是惡意應用。官方的Android Market尚且如此,各種第三方的商店市場就更不用說了。

當 然,在做平台選擇時,可能還會有一些其他因素存在。比如在iOS上,應用無法讀取使用者的短信記錄,也不能在不通知使用者的情況下發送短信或者撥打電話。對于 有這樣需求的應用(我們姑且先不談是否惡意或者侵犯隐私)就隻能在Android上開發了。是以,對于平台的選擇,市場占有量、生态環境的優劣、以及平台 是否能提供所需要的具體功是幾個比較重要的考慮因素。

技術路線的選擇

作業系統

首 先考慮的是作業系統。作業系統是開發應用的基礎,作業系統的能力提供也限制了開發的應用程式的能力。其實,在選擇平台的部分,我們已考慮到了作業系統。因 為現在的平台本身,就是以裝置,運作在其上的作業系統, 以及圍繞着應用開發和使用者建立起來的一個生态環境組成的。在裝置廠商的裝置差異努力被作業系統隐藏起來,營運商慢慢淪為純粹的資料帶寬提供商的今天,我們 通常都已經直接把作業系統的名稱用作平台的名稱了。不過,在選擇平台時,我們會更多地考慮到宏觀因素,而做具體的技術選擇時,就要多考慮一些具體的技術因 素。

系統是否支援多任務。支援多任務意味着可以編寫運作在背景的服務程式,可以在不幹擾或者不通知使用者的情況下做一些工作。目前,iOS系統隻支援一些有限的多任務,而Android則對此不加限制。是以,如果有很強烈的多任務需求的應用, Android會是一個更好的選擇。

作業系統本身對應用能做的事情有什麼樣的限制。相對來說,iOS對應用的限制較大,應用程式運作在一個單獨的沙盒中,不能讀寫任何其他應用的資料,隻能通路很少一部分系統允許應用通路的資料。而Android限制較少,絕大部分系統資料都能通路。

安全性和隐私。應用能通路的系統資料越多,所能獲得的使用者資訊也就越多,使用者的隐私和資料安全就越難以得到保障。從這個角度看,iOS 顯然更優勢。

使用同一系統的不同裝置之間的差異。這 是一個跟作業系統和具體裝置都相關的重要因素是。差異越大,應用開發中需要對不同裝置作不同處理的地方就越多。iOS一緻的裝置名額使開發者不用在這方面 花什麼心思。反觀Android,裝置的差異非常大,從螢幕分辨率大小到有無鍵盤,從電阻屏還是電容屏到有沒有浮點處理器,每一款都有其自身特色和不同之 處。這樣就使得應用開發者需要對大部分不同的裝置都作測試才能釋出到市場上,很多時候還需要針對不同的裝置編寫不同代碼。說得再遠一些,那些基于 Android開放的源代碼修改出來的系統,往往會給開發者造成很大的困擾。

移動應用開發技術選擇六要素:慎重選平台

平台之争仍在繼續,期待新平台的崛起

裝置能力

在 技術路線選擇中,裝置本身的能力也是重要因素。裝置本身的能力包括了裝置自身的計算能力,即CPU的性能,以及是否具有浮點處理器等;圖形能力,是否具有 圖形處理器加速、GPU是否支援OpenGL、支援哪個版本等。這些功能對于計算密集型和圖形密集型的應用,比如3D遊戲, 是極端重要的。從更細節的角度來講,CPU支援什麼樣的指令集,對于比如視訊解碼這樣的應用來說,都是十分重要的因素。裝置本身的能力還包括互動部分,即 螢幕大小、分辨率、是否具有硬鍵盤等。螢幕大小直接決定了螢幕上能顯示能操作内容的多少。一個為手機設計的UI在平闆上會顯得很醜陋,而一個為 Galaxy Note設計的UI在QVGA上根本都沒法看。而硬鍵盤的存在與否,不但跟系統本身相關,跟應用程式本身也相關。在一個有硬鍵盤的手機上,就有更多空間來 顯示内。而Android下的輸入法,對硬鍵盤的輸入處理跟螢幕軟鍵盤的處理就完全不同。移動裝置上所附帶的各種傳感器或資料采集裝置,也是跟應用的技術 路線息息相關的。目前很多應用都依賴于GPS、攝像頭這些附件。

雲端

雲 端,即伺服器端。在這個移動+互聯的時代裡,完全脫離雲端的應用越來越少,而社交網絡的興起加上移動對社交的天然親和性,使移動應用對伺服器端的依賴度更 高了。從跟伺服器端的互動來看,需要考慮的技術有四個方面。首先,需要雲端提供什麼樣的服務。這是最基本的一點,無須多說。其次,移動端以什麼樣的方式從 雲端取得資料并資料發送到雲端。是采用通用的協定還是私有協定,資料是否需要加密等問題。再次,移動端與雲端之間的通信需要多少帶寬。是否在現有的 2G/3G網絡條件下能夠得到滿足,抑或必須使用Wi-Fi。移動端與雲端之間的通信是必須長時間保持還是可以斷續進行。移動應用的網絡環境會比桌面複雜 得多,網絡帶寬會比較快而頻繁,并且會經常在有網絡連接配接與無網絡連接配接的情況下轉換。最後,還需要考慮一個問題是自己搭建服務端還是直接利用現有的公開服 務。自己搭建服務端能夠更好地與自己的移動應用進行配合,能夠自行定義把哪些計算放到服務端進行,但需要在服務端的軟硬體上投入與維護。而利用現有的服務 則比較省事,代價是移動端需要做更多的工作,有些功能會難以做到。

原生應用還是Web應用

大 部分面向網際網路服務的移動應用都會面臨這樣一個問題:是開發一個移動裝置上的原生應用,還是直接開發一個适應于移動裝置上浏覽器的 Web 應用?這兩種形式各有利弊。原生應用的優勢在于能夠充分利用裝置的能力,達到比較好的表現效果和更加平滑的使用者體驗。有一些能力是Web應用所無法做到 的,比如需要用到加速度測量儀的應用,需要用到攝像頭的應用,這些隻有原生應用才能做到。另外,原生應用的好處在于即使沒有網絡連接配接,很多本地功能都可以 繼續使用,而在有網絡連接配接的情況下,把一部分功能由原生應用來實作,還能大大節省流量,并提高應用程式的響應速度。

Web 應用的優勢在于,開發者不需要具備專門的移動平台開發知識,并且能夠随時對問題進行修正和釋出新版本,能夠更快地讓使用者體驗更新,符合目前流行的先釋出再 慢慢改的風氣。這兩者中,一方的優勢恰恰就是另一方的劣勢。針對不同類型的應用程式以及開發人員的具體狀況, 需要有具體的判斷。這兩者的優缺點都同樣明顯,是以将長期共存下去,共同繁榮,不存在一方消滅另一方的可能。

跨平台

随 着各種不同的系統出現,也出現了不少立足于跨平台的解決方案。本來在PC上最強大的跨平台方案Flash在被蘋果拒之門外後,由于其本身在移動平台上性能 和電池消耗方面的不足,最後退出了市場。但新興的以HTML 5為口号的新一代跨平台方案紛紛出現,其中最著名的是PhoneGap。這類以HTML 5為旗幟的跨平台方案内容都很類似:開發者利用HTML 5/CSS/JavaScript編寫應用,編寫的應用經過本地的一個定制過的浏覽器中間層運作。這些應用都還是原生應用而非Web應用, 隻不過以開發Web應用的形式進行開發而已。這樣的架構,通過對本地浏覽器架構的定制,将裝置的特殊能力封裝成能夠被JavaScript通路的系統對 象,進而能夠充分利裝置的能力。這樣的跨平台方案有很明顯的優勢:開發一套東西運作于各個移動平台,平台間的差異由架構解決;不需要學習各平台各自的語言 和API,隻需要會用HTML 5/CSS/JavaScript開發即可,降低了開發成本。

不 過,我們也能很清楚地看到它的劣勢:中間的運作适配層有相當大的運作開銷,性能與原生代碼相比有較大損失;因為需要帶入定制的浏覽器架構, 最終生成的獨立應用體積相對比較大, 需要使用更多的資源。20世紀80年代以來,無數人有着跨平台夢想,從桌面到伺服器到移動裝置,都希望一套東西包打天下。可惜到現在這還隻是美好的願望而 已。我個人認為,這世上沒有一統江湖的可能,跨平台對于一些應用或者對于某些開發者來說是個利器,但它并不能成為統治者。

原文連結:http://www.cocoachina.com/newbie/basic/2012/0207/3944.html

繼續閱讀