2012年3月11日

手機程式開發心得(Android SDK, Xcode, Titanium, phongap 的比較)



過去要寫手機程式是非常難入門的
Objective-C 的複雜語法讓很多人怯步
要寫得好不只要很懂物件導向觀念
也要有很厲害的C語言概念
為什麼兩者都要很厲害呢?
如果只懂什麼是物件導向
那可能可以很快了解如下的轉換


但是要面對幾百頁的Document就會開始頭暈傳向
不知從何開始看起

就算慢慢K到懂了
也無法寫出屬於自己的物件
如果只懂一點的C語言
那可能很熟悉C statement
if else for while switch case
但是對記憶體管理就很陌生
常常讓一隻可以很乾淨的app
跑沒多久就crash


不過這一切在Android出來之後就被改變了
Android採用類似(幾乎就是)Java Virtual Machine的方式
讓已經懂java的人好上手
之外也不必再擔心記憶體的動態管理了
因為Java有garbage collection機制
就算什麼都不懂的人
也只要專注在Java就能把Android app寫出來

但是Google一定沒想到
好入門也是個重大缺點
Android Market上App數量暴增的情況下
有哪些是可使用的App?
哪些是真的有顧慮到使用者體驗的App?
充斥著多少奇怪甚至高危險性的App?
而且因為採用JVM
讓Android效能大為降低
要使用高階硬體配備才能跑得夠順暢
高階硬體配備的背後
就是高耗電量也就是手機無法使用很久
雖然說電池是所有智慧型手機的通病
但我敢說,在同樣常駐程式下 Android 絕對比 iOS 耗電

扯遠了XD
在手機App興起之際
還有個東西也在慢慢起步
就是HTML5
但其實HTML5雖然有WebGL
但目前手機瀏覽器都還不支援
就算有效能也很差
所以無法寫遊戲
只能寫出一些簡單的Table view, Tab view 的App
而且有個很嚴重的問題就是無法直接存取手機功能
例如 GPS, Camera
也無法丟上Market或Store上販賣
所以出現了PhoneGap和Titanium
雖然這兩套好像是差不多的
但其實本質上差異很大

PhoneGap讓你可以跟底層裝置溝通
也可以包成Native App讓你丟上Market
但她只是用WebView來顯示你的畫面
所以要自己打造符合使用者體驗的UI
或是使用現成套件,例如 Jquery mobile, JQtouch, Sencha Touch等
而且使用WebView的方式所以整體架構就變成
Android OS -> JVM -> Webview -> App
由此可見整體效能又被拖累
但未來若Google能對WebKit做記憶體優化
也許可以讓PhoneGap產生的App跟Native App有同樣效果

而Titanium則是使用Javascript打造原生UI的Native App
可以想成是 原本用Java、Objective-C寫Native App
現在改成用Javascript寫
所以不再需要學習兩種語言
就能寫兩種平台的App
而且產生出來的App不是用WebKit來呈現畫面
而是原生UI,也就是直接跟SDK溝通產生的UI
所以在效能上會優於PhoneGap
但缺點是產生的App會非常肥大
目前原因不明
/*------2012/03/19------*/
實際測試用Titanium SDK 1.8.2
產生一個簡單的Table View的App
在Android理實際佔用空間:11.21 MB
移至SD卡後佔1.21 MB
/*--------------------------*/

PhoneGap和Titanium這兩大Framework
要比較的話也沒有誰好誰不好
一切看自己的需求而定
PhoneGap是真的只需要寫一次跨各種平台
但效能會是個問題
而且在Android上實體按鍵的反應也要顧慮到
而Titanium效能勝出,但不能只寫一次
還要對各種平台做UI優化
算要寫一次半(兩種平台不需要寫到兩次)
缺點是產生出的App會很肥大

目前個人比較偏向Titanium但也在關注PhoneGap
未來PhoneGap應該會是趨勢

沒有留言:

張貼留言