手邊恰好有這兩樣陣營的設備,Android 方一台是 Nexus One ,而 iOS 陣營列各清單大概就 iPhone 3G、iPod Touch 4 和 iPad 都玩過了。一直想寫個筆記,是關於 Android 與 iOS 兩大陣營的挑選,大概可分成一般使用者跟開發者心態。就趁著今晚事情多到不知該做哪樣時,想寫篇碎碎念。
以目前市占率來說,大概 Android 系統的呼聲最高,接著則是 iOS 系統的忠臣潮民啊,經過一些時間摸索,我覺得兩方皆有自己的強項,相對也有缺點。趁這個機會把這一年內看到的資料就此紀錄一下,畢竟這麼熱,不看到也難啊。
對一般使用者來說:
我認為 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 也不會怎樣,日子還是會繼續過下去的。