進度條

我想寫手機程式,但我不知道該選iOS還是Android

以市佔率來講Android大勝,但為何iOS的平均薪水較高?

作者: 進度條編輯群 更新日期:

其實標題有點不切實際,因為iOS與Android的陣營多半相當明顯。

像筆者就是果粉,家裏幾乎都是蘋果的產品,連Apple Time Capsule 網路硬碟都買了。

如果各位是還沒有寫過手機程式,心中懷著疑問進來的。多半最後還是會去嘗試寫Android。

 

為什麼?原因很簡單,因為沒有Macbook Pro。

所以在這裡也不諱言,本文其實是打算分析優劣,讓更多人進入iOS開發者的行列。

 

這裡先幫大家釐清一下單詞,Android為手機的三星、HTC等手機的作業系統,
iOS則是iPhone / iPad的作業系統,所以一般我們會稱自己是 Android (APP) 開發者 / iOS (APP) 開發者。

 

 

 

 

現在寫手機APP有很多種方式,這裡先從原廠開始講起。

如果各位已經有一點概念,大概會有聽過Native(原生) APP這個詞。

這指的就是使用原廠提供的開發工具開發APP,iOS就是使用Xcode,Android就是使用Android Studio。

兩個平台上使用的"程式語言"並不相同,所以一般而言如果一家公司在兩個平台都要上架APP。通常必須要有兩個工程師做開發,一個(iOS)寫的是Objective-C / Swift,另一個(Android)寫的是JAVA 。

當然Android陣營最近又多加了一個新的程式語言Kotlin,不過太新所以不列入討論。

 

你說能不能一個人搞定兩個?當然可以,不過加班加到死也沒什麼好處。

就算兩個都會寫,多半也是只負責一個案子,要不然就只是簡單的維護而已。

 

 

 

 

除了所謂的Native APP,還有WebView App。所謂的WebView APP其實就是瀏覽器。

這種APP的概念很簡單,因為無論是iOS還是Android,預設都有瀏覽器元件可以使用,也就是可以在APP裡面任何的地方都可以很輕鬆的裝上瀏覽器。

 

所以有人就想到說,乾脆把整個做好的網站放進去好了。反正網站本來就是做響應式的,所以也不用特別調整。

 

因此可以做到一種程式碼(HTML / CSS / JavaScript)寫兩種APP,節省時間與人力。

 

不過因為瀏覽器其實就是一個完整的程式,所以會拖累APP速度與流暢度,就像是在APP裡面又開了一個APP。因此通常時間預算充足的話還是傾向用原生的開發方式。

 

 

 

 

當然,現在所謂的原生(Native)的定義有點被模糊了,像是Facebook的架構React Native、或是Weex。主要是利用iOS 與 Android的裡面內建的JavaScript引擎,該引擎提供了JavaScript與原生Objective-C或是Java溝通的一個管道。所以可以直接使用JavaScript控制原生的UI元件或是其他功能,而不用透過WebView。

 

這樣的開發方式有相當多的好處,例如不需要上傳新的版本到App Store就可以改版UI。(詳細情形我們等到以後文章介紹React Native再講,主要是利用JavaScript不用編譯,所以遠端下載Script後就可以直接執行,不用改執行程式)

 

但是其實這對資安上是有點問題的,所以蘋果在2017/03/08的時候發出了警告信給部分使用這樣技術的開發者。雖然沒有APP因此下架,但可以看出如果蘋果想要的話,隨時都可以停用第三方套件的功能。原廠禁止,或是原廠推出一樣的功能,導致第三方套件就此退場的故事其實在程式開發的歷史上並不罕見。

 

 

 

 

提到跨平台開發我們可能還會關注微軟提供的Xamarin,這一陣子宣傳的很多。

但筆者有實際的體驗過,目前(2017/03)還是個災難。

 

文件看似齊全,點進去只有標題,連怎麼用都沒有寫。很多功能支援不完全,連關掉Status bar(顯示電量、時間的系統條)都要回到iOS的Xcode才能關掉。原廠不知道為何忘記拉這個選項出來。

 

如果要把UI在兩個平台上做的一模一樣,需要為兩個平台做客製化。寫出來的程式量比起原生開發不見得少,而且還可能會有Bug。因此目前筆者是把它定義為如果你只會C#,而且你剛好靠Microsoft吃飯才會想要去使用它。

 

不過現在不好不見得以後不好,Xamarin使用的技術也不是靠JavaScript,所以或許幾年後會成長得更好。但是儘管如此,因為蘋果的政策關係,所以無論你用哪個跨平台方案,你最後都還是需要一台Mac才能編譯出你的APP。想靠跨平台跳掉購買Macbook的支出大致上還是不可行的。

 

 

 

直到目前不曉得大家有沒有感受到原生開發的優點,接下來要開始提出幾個開發iOS的優點。

 

1. 你需要一台Macbook才能開發 

這時你會想說,這就是我不想開發Mac的主要原因啊,怎麼會是優點呢?

要解釋這就要說到基本的商業邏輯了。因為PC市佔率高Mac很多,所以大多數人都會選擇Android。

因此Android人才比起iOS飽和的許多。這是很單純的供需原理。選工作就是要選有入門門檻的,

這樣被取代的機率會低很多,儘管這門檻只價值40,000元。

但以台灣人強調CP值的個性,就算能理解也大概沒多少人買吧。

(國外的開發者大會幾乎都是人手一台 15" Macbook Pro)

 

 

2. 喜好比較CP值的人會覺得買iPhone很不值得

比較CP值不是錯,但是如果你的客戶很喜歡看規格,喜歡買便宜堪用的產品。以目前台灣普遍的氛圍,APP就應該是免費的。然後你的薪水想要50k以上?除非老闆做慈善吧。(當然這是以純付費購買為主,Android可以做嵌入式搭配硬體來賣,那就是另外一回事了。)

 

你會想說可以置入廣告,不過能靠廣告賺到錢你的群眾要非常的大。如果只有1k或是10k的下載量。大概一直到下架你都收不到廣告費。(通常是達到99鎂才會發放,而且發放的是支票,提領需要自己付跨國匯款費約500+台幣)

 

一般的統計資料都還是明顯的顯示iOS的使用者比較願意掏錢購買APP或是在APP上花錢。除非你的APP商業邏輯是需要大量的免費使用者,例如通訊軟體。不然iOS APP會是比較能賺到錢的。

 

 

3. Android裝置版本太多,相容性很令人苦惱。

iPhone / iPad的版本用手指數都還數得出來,蘋果也會很強硬的讓舊機型退場。Android就不一樣了,現在應該是橫跨了Android 4 ~ 7,然後有10幾家不同公司不同的的規格。再加上連CPU都還有分Intel或是ARM,想要測驗過所有裝置根本就不可能。

 

寫iOS就輕鬆多了,不太需要在意這麼多事,工作不需要這麼複雜。版本多會導致API會有很多版本,新的功能不能使用,開發上面要考量的很多,複雜性變高。

 

 

4. Swift 很好上手。

在以前,開發iOS感覺是很困難的一件事,主要是因為Objective-C用了一種很詭異的方式來寫函式。但現在的Swift就比較直觀很多,跟其他的程式語言沒什麼分別。筆者認為入門難度大概跟JavaScript差不多。

 

 

 

當然Android的優點也很多,我們也可以舉幾個例子。

 

1. 使用JAVA

JAVA作為一個穩定的語言已經很多年了,雖然常有人調侃他說他還活著是因為Android系統的興起,不過事實上只要是像航空業、金融業這樣的大型企業,多半還是使用JAVA,畢竟轉換系統的成本太高。

不過這裡筆者要特別提醒,現在Framework當道,儘管使用的是同一種程式語言,API與程式邏輯還是差異很大。

並不比換一種程式語言要來得簡單多少。

(筆者是先會Android才嘗試要寫JSP,最後JSP還沒真的學會就已經相當熟練Ruby On Rails了)

 

 

2. 製作客製化硬體產品

Android在嵌入式裝置相當的熱門,像是在計程車座位後面的小電視,或是新興的餐廳管理系統POS機(點餐印發票),各式各樣的專門機器都是使用Android系統,因為iOS系統並不開放給其他廠商使用。

所以一般如果你開發了一台比較複雜的多功能機器,你能選的商用免費系統只有Android 、Linux。而Linux在開發圖形化UI介面處理得並不是很好,以Android來說會在開發上會比較容易些。

 

 

3. 市場大

其實無論是國內外,Android還是大宗。所以談到市佔率的話,當然還是要Android。

不過正如同上面iOS的優點,以產值來說的話,Android市場真的有想像中的優嗎?而且其實影響市場大小的因素有很多,不同國家的對事情的看法常常差異很大。

像是讀英文,在亞洲等於考試,但在歐洲是等於生活。


 

4. 什麼作業系統都可以開發

這點iOS就完全比不上了,只能在Mac上開發是滿令人覺得麻煩。

 

 

 

因此以結論而言,開發Android可能會是大部分人的正解。

但如果你想讓生活簡單點又能多賺些錢,買一台Macbook Pro成為iOS開發者會是你一個很好的選擇。

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊