Android和iOS那個好?應該先往哪個上面投入資源?多次被人問到此類問題,筆者剛好自己的項目也需要考慮iOS版本。就索性進行了一番調研,於是有了本文(本次不討論越獄的iOS)
首先從情感上,你喜歡哪個就好,就像百事可樂和可口可樂,當然這個比喻不是很恰當,因為可樂喝起來幾乎一樣,但是Android和iOS還是有很大差別的。
iOS來源於Apple的OSX,是UNIX系統,OSX已經有差不多10年的曆史,從核心底層到軟體架構都是逐步發展過來的。iOS使用ObjectivC這個古老的語言來做開發。而Android是Google基於Linux搞來的,嚴格意義上講Android並不是一個Linux系統,它沒有Linux的xwin,沒有glibc,缺乏一整套標準的Linux程式。Android應用絕大部分都是使用JAVA開發,跑在Dalvik虛擬機器上(一小部分使用NDK)。 Google在底層也修改了很多東西。Android算是一個全新的作業系統. 所以:
- Android使用JAVA,上手容易很多,如果有很好的JAVA Lib加持,開發效率會高些
- iOS沒有虛擬機器, 也沒有GC,效能要好一些,當然這個差別會隨著Google的改進越來越小
- iOS的開發架構很成熟,而且和MAC上通用,同樣的知識體系,也可以開發MAC應用,Android相比是全新的架構, 還會繼續進化.
iOS和裝置緊密整合。軟硬體一家公司通吃。但是Android無法做到, 通常的情況是:Google放出原始碼。 晶片廠商需要1-3個月來做自己的晶片方案, 手機廠商從晶片廠商處買到方案和代碼, 進行自己的整合,定製工作,有時候還需要針對電訊廠商進行定製。 所以:
- iOS的裝置整合度和驅動最佳化都是最好的。電源管理一塊就可見一斑,而Android廠商就魚龍混雜。可能排頭的廠商的旗艦機器會好些,但是由於Android工期一般都比iOS裝置短(請看HTC和三星出機器的速度),所以整體上和iOS比是有差距的。
- Android天然存在升級周期延遲的問題, 而且廠商做升級是也是有成本的。賣手機的廠商無法顧及整個生態鏈,目前這個無解,除非Google做點什麼。
- 由於有多家廠商自己做定製,Android還存在裝置的分裂問題(fragmentation), 作為過來人,我告訴你這個是很頭痛的事情, 且不論調試時間和人力, 光買一大堆裝置的成本就不小。最關鍵的是它會傷美工/UE的心。
iOS是被Apple嚴格控制的系統。 在大部分情況下, 第三方應用是無法拿到所有API的。 這意味系統層級的很多功能只有Apple能做(比如打電話,攔截簡訊)。此外一些涉及使用者隱私的API還會導致系統彈出對話方塊詢問使用者。 同樣第三方runtime做應用開發也是基本不可行的(Flash當初也是被這個條款拒過)。 反過來Android完全不一樣,首先Android是開源的,在設計上Android就允許自由替換系統組件, Android也沒有強制限制API的情況,(hidden API也可以call,沒有人會找你麻煩)。 系統層級的許可權是下放到廠商手中,如果廠商願意給,那第三方開發人員就可以做任何事情。 普通應用的許可權認證也是在安裝的時候就一次性授權完成。 之後不會騷擾使用者。所以:
- Android平台可以做的事情遠遠比iOS多, 你可以做電話管理,地址簿,簡訊管理,可以自己跑後台service。 替換掉系統的組件非常容易
- Android平台也可以跑其他系統的Runtime, 比如Flash, 有了NDK, 你要自己接入一個虛擬機器也是可能的。Google不會管你
- 任何人可以拿Android自己改個獨立的系統出來,也許這樣做的意義和前景有問題,但是同樣,沒有人限制你
iOS上唯一的下載應用途徑就是Appstore,開發人員做應用上線還要通過Apple審核,就算通過了,如果掛羊頭賣狗肉亂來或者調用了不該用的API, Apple一樣隨時可以下架。管理非常嚴格。反過來Android上非常鬆懈:
- 廠商可以內建應用程式。經常會扔一些莫名其妙的軟體預裝在手機上, 筆者在廠商的時候深刻體會到亂選軟體是很好玩的事情。而且我們不會讓你刪除掉的。
- Google的官方菜市場不做應用審核,開發人員上傳軟體很隨意,這是個自由市場。
- 國內還存在大量第三方軟體菜市場。以及豌豆夾類似的PC端管理軟體。
- 如果使用者選擇允許“未知來源”,那麼通過web下載或者安裝卡上的軟體也是可以的。似乎國內使用者都是允許的。所以:
- iOS上的精品軟體多,競爭激烈但管理有序,開發人員也容易掙錢。
- Android上雖然也有精品軟體,但是垃圾軟體更多, 甚至有惡意軟體。 因為無門檻,基本上軟體都是免費,賣不起錢, 大部分都靠廣告。
- Android還有一堆殺毒軟體,這是典型的“沒有困難,製造困難也要上”的精神。
- Android上還有一堆安慰劑軟體,比如能幫你省電的或者是幫你殺後台進程的來提升效能的, 筆者作為做過底層開發的人,笑而不語。
寫了這麼多分析, 結論呢? 事實上你是什麼樣的角色,決定了用誰更好。
- 如果你是普通使用者,請關貼, 本文不是用來給普通使用者選機的。
- 如果你是一個個人軟體開發人員, iOS適合你, 市場規範, 做應用省心。
- 如果你是一個軟體和服務的創業公司, iOS也是適合你做demo的和第一個產品的, 產品靠譜了,使用者在用了,有人給錢了,再往Android走也是可行的。 除非你做的應用要涉及硬體或者需要非常高的系統許可權, 如果是那樣你也只有選擇Android。因為國內的廠商肯定要比蘋果要容易談下來。
- 如果你是一個要做硬體和系統定製的公司, 那麼基本上你只有Android可以選。Android的解決方案的成本也在不斷下降。
- 如果你是一個有中國特色的公司,想搞點移動業務玩玩, 還要瞞著使用者做很多事情。 那麼Android也是更好的, 就算你不作惡, 控制權在自己手中也會方便運作一點。