2011年3月24日 星期四

Android 與 iPhone 接觸心得

手邊恰好有這兩樣陣營的設備,Android 方一台是 Nexus One ,而 iOS 陣營列各清單大概就 iPhone 3G、iPod Touch 4 和 iPad 都玩過了。一直想寫個筆記,是關於 Android 與 iOS 兩大陣營的挑選,大概可分成一般使用者跟開發者心態。就趁著今晚事情多到不知該做哪樣時,想寫篇碎碎念。


以目前市占率來說,大概 Android 系統的呼聲最高,接著則是 iOS 系統的忠臣潮民啊,經過一些時間摸索,我覺得兩方皆有自己的強項,相對也有缺點。趁這個機會把這一年內看到的資料就此紀錄一下,畢竟這麼熱,不看到也難啊。


對一般使用者來說:



  • UI操作性及美觀程度


我認為 iOS 系統整體表現遠勝於 Android 系統


如果不認同?那就找一台 Android 手機跟一台 iPhone 手機,用手指快速的捲動操作畫面,就會發現 iOS 流暢度真的不是蓋的,不然就試試輸入文字,瞧瞧虛擬鍵盤的辨識能力。之前搭捷運看到別人用 Android 手機玩 Angry Birds ,我自己也用 Nexus One 下載嘗試過,發現畫面還算流暢,但有一個很大的問題是觸控界面的靈敏度,我以為只是自己要點按鈕常常要點個 1~3 次才能正確啟動功能,很巧地在捷運上看到別人玩這款遊戲,當他想要按再玩一遍時,我發現對方也是有這方面的情況。此部分曾跟同事閒聊,再猜想是不是 iOS 觸控方面是不是有比較特別的實作方式或專利等等(例如手指滑動的手勢),使得 Android 系統要避開專利或甚麼的才因此有這種不靈敏的情況吧?!


拿 Nexus One 來比,盡管是 2010 年年初的產品,但他的硬體規格不差,並使用 Android 2.3.3 系統測試的,也不排除可能是硬體設備已是一年多前的,但 iOS 用的設備也是半年或一年前的。至於美觀程度,以遊戲來說,兩者上看起來沒啥不一樣。對於使用各家 SDK 開發的程式,我認為 iOS apps 還有是不錯的操作介面及基本的美化,這大概多虧了 iOS 封閉性,導致能夠有統一的螢幕大小。



  • 軟體安全性


我認為 iOS 的軟體安全性高於 Android 環境


記得看過一堆文章 iPhone 相關的文章,常常有人說一定要 JB ,而 JB 後能夠調整很多細節,比方說,安裝另一套輸入法!在 iPhone 上的 iAccess 廣受好評,但這一套是必須 jailbreak 後才能使用的,起初我並不在意(預設手寫就滿足了),直到我用了 Nexus One 手機,安裝完 Android 2.3.3 後,想輸入中文時,才發現預設沒有對應的輸入法,準備在 Android Market 下載一款注音輸入法,正要安裝的時候看到了警告!大意是說,輸入法程式可能擷取隱私資訊,例如帳密、信用卡等,看到這則訊息才恍然大悟,才想起來為啥 iPhone 不允許這類程式,因為輸入法真的能夠造成很多安全性問題,以前在 Windows 系統安裝時都沒想過,現在才驚覺懂事 XD 就像被人監視著你從鍵盤敲出了甚麼東西。


對於 iPhone apps 來說,並且是正規的程式開發商(也就是JB後才能安裝的軟體不算),其程式將稍微被 Apple 驗證,如掃 binary 檔案查看是否用到隱藏 API 外,程式在運作中是處於 sandbox 環境,也就是正規使用並不允許直接存取其他程式或是系統資料的,例如寫了一套照片編輯程式,並不能直接存取系統內建的照片,而是要透過 API 將系統照片匯入 sandbox 環境的,最大的缺點就是造成使用者操作的不便,以及空間浪費(兩份一樣的資料),但這應該是基於安全性和系統穩定的規劃。相較於 Android 系統,開發商產生的程式並沒有被驗證,容易被做壞事,這也是前陣子看到一堆惡意程式被下架,相較之下 Android 的彈性導致安全性降低許多,亦能體會不少防毒軟體在 Android 系統上提出防毒程式的理由(在 iPhone 架構上可能不允許?在 sandbox 只能掃自己啊 XD)



  • 存取手機資料


我認為 Android 系統方便性遠高於 iOS 環境


Android 手機以 Nexus One 為例,一插上 mirco usb 時,就會跳出訊息問你要不要啟用 usb 儲存裝置,只要輕輕一按,手機就像隨身碟一樣,供人擺放文件,實在方便啊。反觀 iPhone 手機為例,插上去後還必須透過制式的 iTunes 軟體,透過統一的介面才能"同步"音樂、照片、程式,是的,這邊稱作"同步"代表處理的細節很冗長,說真的使用上很不方便,在加上 iTunes 只支援 Mac OSX 跟 Windows 環境,那些 Linux 使用者呢?又該怎麼辦。而 iPhone 程式並不是透過 iTunes 就可以胡作非為,基本上連 USB 隨身碟的功能都沒有,除非是找到特定的 iPhone 軟體,把東西丟進該軟體的 sandbox 外,沒有其他方式了,如果要說有,大概就像 Dropbox 這類軟體,透過網路傳資料進 iPhone 囉!(偷偷說,Dropbox 真的不錯,可以同步資料外,還可以看 PDF 等文件,很方便)



  • 軟體介面的彈性


我認為 Android 系統在軟體介面上勝過 iOS 環境


由於 iOS 環境的一致性,導致操作軟體時必須要依照制式的操作方式,如開啟一個 app 才能享受其功能。對 Android 來說,還提供自訂 Widget !也就是可以自訂手機畫面上預設顯示的東西,如天氣、股票等資訊,不需要開啟 app 才能使用,十分方便。


對開發者來說:



  • 開發的門檻


Android 開發門檻小於 iOS 


理由有很多個,例如 Android 是用 Java 語言開發,而 Java 幾乎已經各大資訊科系必學的語言,並且開發所需的作業系統環境並不限制,只要能跑 Java 就差不多了,反觀 iOS 部分,正規的環境是 Mac OSX ,使用 Objective C 語言及其 Xcode 編輯和模擬環境,前者就受限於作業系統,後者又是少數人使用的 Objective C 語言。先不管 Android 手機比 iOS 裝置便宜的問題,光開發 iPhone 程式就需要買一台正版 Mac OSX 機器(印象中作業系統的正版性是綁在 Apple 所提供的機器環境),現在最便宜的一台 Mac mini 也要 25,900 哩!更別說想要把程式裝在手機上跑,還需要開發者身分,一年又噴 99 美金啊。反觀 Android 環境,跑程式在手機上並不需要開發者身分,如果想要擺在 Android market 也僅需終身費 25 美金。


開銷細算:


Android:
買一隻 Android 手機,大概小於 7000 元就有,接著就用自己的電腦跑模擬器,並且可以弄到手機上運行。

iOS:
買一隻 iOS 設備,以最便宜的 iPod Touch 4 為例,台灣賣 8600 元,在加上一台 Mac mini,台幣 25900,最後在一個開發者身分,99 美金,算一下就知道花多少囉


這邊要補充一下,使用過兩邊正式的開發環境後,個人覺得 iOS 作的還不錯,運行跑模擬器也很快很順,倒是 Android 的開發環境,在新的電腦裡運行模擬器,可還是要執行超過一分鐘才能啟用的!這也算是另一種無形的成本吧。


除此之外,目前還有一些跨平台的開發方式,主要為兩個方向,一種就是幫你包成 native app 但裡頭是用 Web 呈現,另一種則是透過 compiler 技術幫你轉成 native app ,例如有從 javascript 或 flash 語言轉換等,但這類開發環境,最大的缺點就是無法使用 Android 或 iOS 系統的全部功能,但隨著跨平台開發者的努力,應該會漸漸拉小距離。



  • 程式資源的管控


iOS 資源控制優於 Android 環境


手機仍是一個資源受限的嵌入式環境。如果有修過嵌入式作業系統的話,印象中常會有一種很無聊的作業,那就是要比看誰的 kernel 編得比較小 XD 作法大概是把不必要的 packages 或 drivers 移掉,或是編譯時下的 gcc 有優化參數等。換句話說,手機仍是資源受限的環境,對於開發的環境來說,我覺得使用 Objective C 與 Java 擁有更優異的效能,例如可以決定記憶體的區塊大小,甚至手動歸還系統等,除此之外,對於 Android 來說,程式運行還跑在 VM 上頭,效能上會有不小負擔。


資源管控是很重要的議題,無論是工作站或是嵌入式應用,真正有品質的軟體,對於記憶體都很要求的,連最近熱門的 Firefox 4 也有文章在談論他記憶體管控部分。我覺得資源控制得好,是一門必須重視的學問,不能因為現在記憶體便宜就胡亂使用。



  • 開源程式碼


這部分是 Android 比 iOS 好


這部分影響很大,由於 Android 系統是 open source 的,導是各家硬體廠可以好好善用他,拉近軟體環境,這點對目前的 iOS 就無法辦到。這也就是為啥 Android 手機雨後春筍般地冒出,甚至有人用它做了很多其他應用,如導航機、小筆電等。對於公司來說,不必支付軟體費真的是賺很大啦。


另一個方面,這對開發者也變成一種負擔,例如 Android 版本更新快,並且各版本之間存在相容性的問題,就看到一些 Android app 的好手,寫好了程式後,發現下一版 Android 語法變了,導致之前寫的程式都只能變成 bug 啦,也稱得上是另一種苦命啊。


呼,難得碎碎念,大概就先這樣吧。如果說要推薦別人買手機,很有錢就都買 XD 若錢不是啥問題,大概會推薦一般人買 iPhone 吧,操作上都很制式化,很快上手、介面流暢,再加上社會地位、潮流,用起來也無比有種爽度吧!若錢不多,大概可以考慮 Android 囉,初用智慧手機還是會被他的方便性給感動吧!如果是開發者的話,喜歡寫一堆有的沒有的程式,那 Android 應該很適合,無拘無束,並且不斷地在跨幅度地進步,哪天也不需要 NB 了,把常用的程式都跑在 Android 上吧!但也別忘了,Apple 所給予的 API 或環境,都算很足夠可以開發出不錯的應用程式,甚至遊戲的,例如 Angry birds。至於 iPhone 是不是需要 JB ?我想不 JB 也不會怎樣,日子還是會繼續過下去的。


沒有留言:

張貼留言