Android 和 iOS 應用開發有哪些不同?

開發技術、成本門檻,營收能力、發展前景等方面。


知乎上一直有這樣的討論。。。Android/iOS/WP 就好像語言之爭一樣,不同的人適合不同的語言,具體情況具體分析。各種平台開發技術/成本/營收/前景都各有優劣。

熟悉Java的程序員可以花費很少的成本就可以轉到 Android 平台;大家都說Android 營收能力差,這也不盡然,主要看你是做遊戲還是做應用,看你做收費應用還是放廣告,這都有不同的模式和策略;以後Android手機應該就是主流,至少可以佔到市場份額的5成以上,你說前景好不好。

iOs應用基於ObjectC,開發門檻也不高,加上Xcode的圖形界面,使得學習曲線看上去也不是很艱難,不過你至少得要有一台Mac設備和iOs 設備,還有每年的開發者費用;App Store看起來很美好,但現在單槍匹馬賺翻的事情越來越少,並且僅僅是少數,推廣費用也節節攀升;靠蘋果出色的工業設計能力,iOs 設備最近5年還會是很堅挺,前景依然看好。

對於個人開發者,熟哪個就上哪個。如果都不熟,就上iOs。對於團隊來說,Android/iOs 不是一個單選題。


幫您邀請了幾位牛人來試試回答。

也可以關注這個問題,有相似性,但好像不完全一樣,所以我沒重新定向問題。

「作為過來人,如果現在開始做一個移動應用,從 iOS 起步好一些,還是從 Android (OS) 起步好一些?如果針對國內市場,哪些本土的 Android 亞平台比較適合起步的開發者?」

http://www.zhihu.com/question/19674318

這方面問題您可以搜索「Android vs. 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沒有虛擬機,性能要好一些,當然這個差別會隨著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上非常鬆懈:

  1. 廠商可以內置應用。經常會扔一些莫名其妙的軟體預裝在手機上, 筆者在廠商的時候深刻體會到亂選軟體是很好玩的事情。而且我們不會讓你刪除掉的。
  2. Google的官方菜市場不做應用審核,開發者上傳軟體很隨意,這是個自由市場。
  3. 國內還存在大量第三方軟體菜市場。以及豌豆夾類似的PC端管理軟體。
  4. 如果用戶選擇允許「未知來源」,那麼通過web下載或者安裝卡上的軟體也是可以的。似乎國內用戶都是允許的。所以:
  • iOS上的精品軟體多,競爭激烈但管理有序,開發者也容易掙錢。
  • Android上雖然也有精品軟體,但是垃圾軟體更多, 甚至有惡意軟體。 因為無門檻,基本上軟體都是免費,賣不起錢, 大部分都靠廣告。
  • Android還有一堆殺毒軟體,這是典型的「沒有困難,製造困難也要上」的精神。
  • Android上還有一堆安慰劑軟體,比如能幫你省電的或者是幫你殺後台進程的來提升性能的, 筆者作為做過底層開發的人,笑而不語。

寫了這麼多分析, 結論呢? 事實上你是什麼樣的角色,決定了用誰更好。

  • 如果你是普通用戶,請關貼, 本文不是用來給普通用戶選機的。
  • 如果你是一個個人軟體開發者, iOS適合你, 市場規範, 做應用省心。
  • 如果你是一個軟體和服務的創業公司, iOS也是適合你做demo的和第一個產品的,
    產品靠譜了,用戶在用了,有人給錢了,再往Android走也是可行的。 除非你做的應用要涉及硬體或者需要非常高的系統許可權,
    如果是那樣你也只有選擇Android。因為國內的廠商肯定要比蘋果要容易談下來。
  • 如果你是一個要做硬體的, 那麼基本上你只有Android可以選。
  • 如果你是一個有中國特色的公司,想搞點移動業務玩玩, 還要瞞著用戶做很多事情。 那麼Android也是更好的, 就算你不作惡, 控制權在自己手中也會方便運作一點。


說說自己的淺見

兩個平台對於開發來說,最大的不同是理念的不同

ios的理念是要把絕大多數的計算包括內存管理交給編碼時的程序員(手動內存管理)或編譯時交給編譯器去自動插入retain、release(自動引用記數)。還包擴有人喜歡有人討厭的手動計算布局,都為了提升運行時的速度。

而android的理念是在運行時幫助開發者處理很多計算,布局的相對位置(ios 6.0之後雖然也支持自動布局,但是不會兼容舊版本)。還有最重要的就是GC了,它的好處是讓開發人員盡量不必在編碼時關注內存管理(不是完全不去管),但是如果你代碼寫的有問題,它實在是影響運行效率,因為GC運行時使用的多個演算法都是要暫停所有線程的

成本門檻和營收能力的差別基本上也是有目共睹,而發展前景真的是沒法說,我們都不是預言家,但是我覺得有前事之師如ms與apple,現在兩家都挺好的嘛!


用ios的都願意往app投錢,這是關鍵。其他大同小異


推薦閱讀:

想開發一款安卓社交類的APP需要有哪些準備?
如何實現 Medium for iOS 那般的下劃線效果?
一個android工程師除了需要編寫代碼的技能,還需要什麼?
Android Studio項目應該提交哪些文件到GitHub上?
Android Studio有哪些非常好用的插件?

TAG:iOS應用 | iOS開發 | Android應用 | Android開發 |