隨著Android手機(jī)市場份額超過80%,業(yè)界內(nèi)關(guān)于“Android和iOS哪個(gè)系統(tǒng)更好”的爭論也變得越來越熱。不過拋開軟件經(jīng)理與投資者,真正影響這場紛爭的其實(shí)是開發(fā)者!只有讓這些開發(fā)者更舒心,平臺才會發(fā)展的更迅猛。
我就是一名任職于HappyFunCorp的軟件工程師,最近剛剛為iOS和Android平臺編寫了一些程序,因此讓我來說說在我進(jìn)行編程的過程中,使用這兩個(gè)平臺的感受。
我就是一名任職于HappyFunCorp的軟件工程師,最近剛剛為iOS和Android平臺編寫了一些程序,因此讓我來說說在我進(jìn)行編程的過程中,使用這兩個(gè)平臺的感受。
首先介紹一下背景:在此之前我曾經(jīng)編寫過許多Android和iOS的應(yīng)用,有個(gè)人應(yīng)用也有專業(yè)應(yīng)用。在編寫這些應(yīng)用時(shí),我不得不提到一款擴(kuò)平臺的開發(fā)工具Xamarin。如果你對于C#很熟悉,而不太了解Java和Objective-C語言,那么這款跨平臺的開發(fā)工具將會是你開發(fā)應(yīng)用的首選工具。
開發(fā)環(huán)境
你當(dāng)然可以像往常一樣,通過文本文件寫代碼,不過如果你使用整合開發(fā)環(huán)境,那么編程無疑會變得更高效。
蘋果的開發(fā)環(huán)境是Xcode,在Xcode上工作是一件十分愉悅的事情。它反應(yīng)迅速,功能強(qiáng)大,同時(shí)又十分順手。它的調(diào)試器可以做到無縫工作,同時(shí)反應(yīng)十分快速。
而Android平臺呢?目前的開發(fā)環(huán)境是Eclipse,由Android外掛程序調(diào)試,表現(xiàn)相當(dāng)糟糕。遲緩,拖沓,同時(shí)操作又違背常理,復(fù)雜的一團(tuán)糟,與Xcode相差甚遠(yuǎn)。而更不要提Android模擬器了,每次啟動(dòng)都要好幾分鐘,而其中一半時(shí)間都無法連接到Android Debug Bridge。
從目前來看,谷歌也已經(jīng)意識到了問題,他們正在開發(fā)一套全新的Android Studio IDE:
Android Studio目前已經(jīng)提供了預(yù)覽版的下載,其中一些功能還沒有完成,開發(fā)者在使用的過程中會遭遇到許多bug。如果你對于使用這樣一款半成品覺得十分不爽,那么或許你可以通過下載ADT Bundle來替代它。
雖然谷歌開始重視開發(fā)環(huán)境這一點(diǎn)還是值得令開發(fā)者欣喜的,不過反應(yīng)速度還是慢的讓人吃驚,要知道,距離我購買第一款A(yù)ndroid手機(jī)已經(jīng)過去了四年半,而四年半的時(shí)間,開發(fā)環(huán)境仍然一團(tuán)糟。
獲勝者:iOS 勝出一條街
配置
與蘋果的Xcode相比,Android擁有一個(gè)清單文件,通過Eclipse可以將你的應(yīng)用在這個(gè)文件中進(jìn)行存儲或編輯。當(dāng)應(yīng)用運(yùn)行出現(xiàn)錯(cuò)誤的時(shí)候,我還是更希望可以得到更清晰的錯(cuò)誤信息。而Android應(yīng)用的配置明顯更簡單卻更優(yōu)雅。
獲勝者:Android
交互設(shè)計(jì)
你可能已經(jīng)猜到,蘋果肯定會獲得這一輪比拼的勝利。蘋果的界面生成器可以快速生成美觀的用戶界面。不過它也存在著一個(gè)問題,隨著我試用界面生成器的時(shí)間越長,我就越不喜歡它。雖然它對于簡化有著很深刻的理解,可是隨著時(shí)間流逝、應(yīng)用進(jìn)化,這些簡化看起來卻更復(fù)雜更混亂,而我同樣不喜歡蘋果在一年前為Storyboard添加的多屏幕功能。
Android理論上來說擁有一套相同的視效開發(fā)工具,在實(shí)際使用中只要你編寫XML文件,那么在編寫結(jié)束之后,它會自動(dòng)適應(yīng)不同屏幕尺寸并完成布局。
在這一環(huán)節(jié)中,競爭程度要比你想象的更激烈,盡管我認(rèn)為兩個(gè)系統(tǒng)都有著自己的優(yōu)勢,不過我還是認(rèn)為iOS勝出。首先,它更加簡潔:只有三種屏幕尺寸需要適配,而Android則明顯要復(fù)雜許多。第二,默認(rèn)的iOS視覺元素要比Android的好看太多了。
獲勝者:iOS
語言
Android應(yīng)用的語言是Java,而iOS的應(yīng)用語言則為Objective-C。在編程的最開始,我選擇使用Java,而沒有選擇Objective-C,因?yàn)楫?dāng)時(shí)對于Java更熟悉。但是我很快就發(fā)現(xiàn)自己越來越喜歡Objective-C。它比Java更易用也更簡潔。它有category,可是Java沒有;它有block,可是Java沒有。
獲勝者:iOS
API
Android和iOS都為開發(fā)者提供了海量的軟件資料庫,而籠統(tǒng)的說,這些資料庫也十分相似:這些API中有一些提供了手機(jī)的使用功能,有些提供了網(wǎng)絡(luò)連接功能,這些部分大多歸于控制器來完成。對于iOS ViewController來說,它的作用等同于Android Activity。
但iOS卻具有Android所沒有的一些框架和功能。Android并沒有iOS強(qiáng)勁的Core Data框架。這個(gè)框架使用十分方便,而且設(shè)計(jì)也相當(dāng)簡潔。
獲勝者:iOS
網(wǎng)絡(luò)
網(wǎng)絡(luò)連接通常是在后臺運(yùn)行的,因此它們不會對應(yīng)用本身造成太多影響。Android提供了AsyncTask,用于檢測用戶當(dāng)前是否在線。而iOS也提供了相應(yīng)的功能,不過它們因?yàn)榧墑e還很低,因此表現(xiàn)還不是很讓人滿意。
不過你可以通過許多開源的資料庫讓這部分變得更加簡單。我通過使用AFNetworking,可以讓連接變得十分簡單。但這個(gè)工具卻不支持Android,因?yàn)镴ava不能完成block操作。
獲勝者:Android的第一方獲勝,但iOS的第三方資料庫也相當(dāng)出色
最終獲勝者是...
雖然Android在一些地方有其獨(dú)特的優(yōu)勢,不過總體來說,在為iOS編寫出色的應(yīng)用還是要比Android簡單許多。而考慮到iOS用戶往往擁有著更健康的付費(fèi)使用習(xí)慣,開發(fā)者也很自然的會選擇優(yōu)先為iOS開發(fā)應(yīng)用。新的Android Studio IDE可能會提升一些Android的開發(fā)體驗(yàn),不過還遠(yuǎn)遠(yuǎn)不夠。