Android開(kāi)發(fā)的過(guò)去、現(xiàn)在和將來(lái)

現(xiàn)如今,擁有著 80% 的市場(chǎng)份額的 Android 是最主流的手機(jī)操作系統(tǒng)。它運(yùn)行在無(wú)數(shù)的智能手機(jī)、平板以及其他各種各樣的設(shè)備上。僅憑這一點(diǎn),我們是否可以認(rèn)為 ?Android 編程是簡(jiǎn)單而輕松的呢?

幾年前,Miley Cyrus 還在唱著鄉(xiāng)村音樂(lè),Justin Bieber 還梳著他那著名的“Bieber”發(fā)型,Malcolm 還在 AC/DC 樂(lè)隊(duì),而同時(shí) Android 開(kāi)發(fā)還相當(dāng)復(fù)雜。Android 開(kāi)發(fā)者對(duì)于Android 系統(tǒng)開(kāi)發(fā)最簡(jiǎn)單的應(yīng)用都有一大堆問(wèn)題。

為什么?嗯,親愛(ài)的讀者,問(wèn)題出在各種地方:

漏洞層出的IDE:你有沒(méi)有試過(guò)用一把鏟子去修理你的汽車(chē)?或者你開(kāi)著你爺爺?shù)?0年前的 Yugo 汽車(chē)去把妹?在Android世界中,對(duì)于 Android 開(kāi)發(fā),我們有一個(gè)官方 IDE——Eclipse,它有一大堆問(wèn)題,在10分鐘之內(nèi)保證讓你抓狂。Eclipse ADT 插件對(duì)于更多的復(fù)雜工程來(lái)說(shuō)也是充滿漏洞、緩慢而不友好的。我們對(duì)此非常惡心,祈禱能發(fā)生奇跡來(lái)改善這一切。

系統(tǒng)分裂:Gingerbread (2.3.7)在 Android 系統(tǒng)版本中占據(jù)著相當(dāng)大的市場(chǎng)份額(至少15-20%)。正如你已知道的,Android 正通過(guò)4.0版本(Ice Cream Sandwich)經(jīng)歷著復(fù)雜的翻修過(guò)程。系統(tǒng)有了新的用戶界面元素、新的設(shè)備硬件API、新的屏幕密度等等,這就導(dǎo)致了我們必須小心地優(yōu)化和編寫(xiě)我們的應(yīng)用來(lái)使得在新版本Android和舊版本 Android 都能運(yùn)行良好。所有的這一切都極大地影響了我們的開(kāi)發(fā)進(jìn)程和導(dǎo)致了更多的 bug 和 crash,以至于延長(zhǎng)了開(kāi)發(fā)時(shí)間。

緩慢的仿真器:我們需要在不同的 Android 系統(tǒng)版本和屏幕尺寸測(cè)試我們的應(yīng)用,所以我們必須買(mǎi)至少20種 Android 設(shè)備。聽(tīng)起來(lái)是不是很瘋狂?好吧,我們能使用仿真器來(lái)解決。但是你曾有沒(méi)有試過(guò)用默認(rèn)的 Android 仿真器?它的緩慢讓人痛不欲生,當(dāng)你的應(yīng)用正在被部署到你的仿真器的時(shí)候,你會(huì)讓你自己去數(shù)辦公樓前面停的車(chē)的數(shù)量來(lái)打發(fā)時(shí)間。

用戶界面(UI):Android 應(yīng)用無(wú)聊死了。如果你褻瀆看一眼 iOS 應(yīng)用,你會(huì)看到這些應(yīng)用充滿了生活氣息而且色彩繽紛。所有的事物都是活生生的,動(dòng)作轉(zhuǎn)換,從左到右、從右到左……而我們的應(yīng)用是死的,如果我們想要提高我們的用戶體驗(yàn),老舊的Gingerbread 會(huì)很快抹殺我們的希望和憧憬。

但是這些都是2013的事了。

一個(gè)新開(kāi)始

所有者一起都在去年發(fā)生了改變,改變發(fā)生的如此之快,以至于你很容易地失去對(duì)它們的追隨腳步,然后問(wèn)自己“這都是什么時(shí)候發(fā)生的?”更重要的是整個(gè) Android 生態(tài)系統(tǒng)提高了很多——我們有了新的硬件(智能手表),新的軟件(Gradle,Android Studio),新的系統(tǒng)(Android 5.0 Lollipop)。

每個(gè)人都對(duì)此有著貢獻(xiàn)——Google、設(shè)備制造商、開(kāi)發(fā)者。每個(gè)人都有相同的目標(biāo)。問(wèn)他們相同的這個(gè)問(wèn)題:“OK?,F(xiàn)在我們有穩(wěn)定的系統(tǒng),十億計(jì)的應(yīng)用和十億計(jì)的用戶——我們?cè)趺床拍苓M(jìn)一步簡(jiǎn)化和提高 Android?我們?cè)趺床拍苁沟瞄_(kāi)發(fā)進(jìn)程更好?”這就是 open access和 open source 原則展現(xiàn)的他們的潛力——每個(gè)人都可以做出改變、產(chǎn)生提高、創(chuàng)造新的事物的所在。

很難列出全部的變化,但我做了一個(gè)列表來(lái)列出其中(在我看來(lái))最重要的變化:

1.ANDROID STUDIO

我們最喜歡的Andorid 開(kāi)發(fā)的 IDE 終于變成了穩(wěn)定的1.0版本了。我不會(huì)談?wù)撎嚓P(guān)于 AS 為什么對(duì)于開(kāi)發(fā)進(jìn)程來(lái)說(shuō)是最好的相關(guān)細(xì)節(jié),因?yàn)槲覀円呀?jīng)有兩篇登出的博客覆蓋了這一主題。我會(huì)說(shuō) Eclipse ADT 插件已經(jīng)不被官方贊成使用,我也強(qiáng)烈建議你把所有的應(yīng)用遷移到 ?Android Studio。向 Google 致敬!

?新Android Studio Logo

2.GRADLE

Gradle 是工程自動(dòng)化工具,它已經(jīng)替代 Apche Ant 成為 Android 應(yīng)用主要的構(gòu)建系統(tǒng)。它在 Android 開(kāi)發(fā)者中非常流行。因?yàn)槲覀兺ㄟ^(guò)它幾乎可以自動(dòng)化所有事情——從將我們的應(yīng)用區(qū)分成不同風(fēng)格、正確配置簽名等等

因此,他變成了一系列的“管理”工具,我們用來(lái)定義和維持我們的工程設(shè)置。Gradle 也是測(cè)試自動(dòng)化庫(kù)和自動(dòng)構(gòu)建服務(wù)器大量增長(zhǎng)的主要原因。測(cè)試自動(dòng)化庫(kù)和自動(dòng)構(gòu)建服務(wù)器又給 ?Android 系統(tǒng)帶來(lái)了持續(xù)集成(CI)開(kāi)發(fā)過(guò)程。但是不是一切都是那么令人樂(lè)觀——Gradle也在執(zhí)行速度上飽受批評(píng)。在復(fù)雜工程上面 Gradle 也真的很慢,但我們希望這個(gè)問(wèn)題會(huì)在接下來(lái)的版本和發(fā)行中解決。

3.LOLLIPOP

Google 說(shuō) Lollipop 是自人類(lèi)誕生以來(lái) Android 系統(tǒng)最大的提升,Google 說(shuō)的沒(méi)錯(cuò)。 Android 的每個(gè)部分都有相應(yīng)的修改和提升,但是我們也尚未見(jiàn)到開(kāi)發(fā)者對(duì)這些改變有怎樣的反應(yīng)。雖然將舊設(shè)備升級(jí)到 Lollipop 還有很多問(wèn)題,但是我們期望這會(huì)在接下來(lái)的版本中解決。

4.LOLLIPOP 的外在—— MATERIAL DESIGN

對(duì)于這個(gè)叫作 Material Design 的金光閃閃的新 Android UI 有很多要寫(xiě)。這是最近幾年Android 系統(tǒng)最重要?jiǎng)?chuàng)新點(diǎn)之一,它完全改變了我們應(yīng)用的觀感。我最喜歡 Material Design 的是它徹底改變了用戶體驗(yàn)原則——一切都重要。即使是細(xì)小的細(xì)節(jié)也不能被忽略。我們必須對(duì)每個(gè)用戶交互、點(diǎn)擊、觸摸等做出響應(yīng)。因?yàn)?,這正如 Google 所說(shuō)的,這些動(dòng)作都是有意義的。我們必須使用黑體、擁抱新的生動(dòng)的色彩、每一步使用動(dòng)畫(huà)、大字體,簡(jiǎn)單地說(shuō),我們要給我們的應(yīng)用以生命。Material Design 同樣也完全符合 Android 生態(tài)系統(tǒng),適應(yīng)各種不同的屏幕尺寸。這也就是為什么我們的應(yīng)用是相似的,但是在不同的平臺(tái)有著不一樣的外觀。

?Material Design 動(dòng)畫(huà)

5.LOLLIPOP 的內(nèi)在—— ART

每個(gè)人都在談?wù)撛O(shè)計(jì)、UI、UI 元素、動(dòng)畫(huà)、色彩······,但是我們是開(kāi)發(fā)者,我們感興趣的是外表之下的東西。而且,哇!?。∵@引擎真是美極了:ART,新的運(yùn)行系統(tǒng)。為了記錄,ART 并不是什么新東西—它被介紹為 Kitkat 上次要的運(yùn)行系統(tǒng)。通過(guò)引入 Lollipop,它完全代替了 Dalvik,成為主系統(tǒng)。由于很多原因 ART 是偉大的,但我只提及其中兩點(diǎn):

一、它使用 AOT(ahead-of-time)編譯,這意味著它把中間語(yǔ)言(Dalvik字節(jié)碼)編譯成系統(tǒng)二進(jìn)制碼。這就導(dǎo)致我們應(yīng)用更短的執(zhí)行時(shí)間、更少的 CPU 占用、更少的電池消耗。在另一方面,安裝過(guò)程也就更長(zhǎng)。

二、他提供 multidex 支持。Dalvik dex 文件有個(gè)重大缺陷—它們只能包含65,356種方法。我們必須組織好我們的 Android 應(yīng)用以使方法不要超過(guò)這個(gè)限制。盡管這個(gè)數(shù)字可能看上去很大,但是如果你把 Google Play 服務(wù)(幾乎每個(gè)應(yīng)用都需要)算在內(nèi),再加上一些外部函數(shù)庫(kù),你就能輕易超過(guò)這個(gè)限制。ART 以一種突破了字節(jié)碼以眾多 dex 文件打包到一個(gè)單獨(dú)的 APK 的方式組織你的應(yīng)用。

6.ANDROID 無(wú)處不在

我們開(kāi)始給智能手表、電視、汽車(chē)開(kāi)發(fā)應(yīng)用,為什么要在此打住呢?如果你坐在你的房間,喝著了一杯熱咖啡,花一兩分鐘看看你的周?chē)T诮酉氯サ倪@幾年你也許會(huì)看到至少五樣運(yùn)行著 Android 系統(tǒng)的設(shè)備—電視、筆記本、平板、相機(jī)、自行車(chē)、廚房電器、恒溫器、汽車(chē)等等。Android 開(kāi)始作為一種試驗(yàn),它被證明能夠運(yùn)行在任何一個(gè)擁有小型微處理器的事物上面。

7.智能手機(jī)質(zhì)量的提高

智能手機(jī)還是Android 系統(tǒng)的核心設(shè)備。長(zhǎng)期以來(lái),智能手機(jī)的整體質(zhì)量有問(wèn)題。老舊的Android 設(shè)備比老舊的 iPhone 更丑更慢——iOS 通常感覺(jué)更流暢。對(duì)于那些被眾多中國(guó)制造商們生產(chǎn)的廉價(jià)設(shè)備來(lái)說(shuō),這種感受尤其如此。

幸運(yùn)地是,Android 智能手機(jī)的質(zhì)量和速度穩(wěn)步提升,所以今天我們有過(guò)多適合每個(gè)人的預(yù)算和需要的新設(shè)備。如果你想擁有一臺(tái)手機(jī),它有著很高的相機(jī)分辨率、優(yōu)秀的設(shè)計(jì)、強(qiáng)大的處理器和電量,這不是個(gè)問(wèn)題——我們都有。

我個(gè)人最喜歡的品牌是摩托羅拉,它的手機(jī)—Moto X、Moto G和Moto E 都有著優(yōu)美的線條,同時(shí)也的確有著很好的性?xún)r(jià)比。而在同時(shí),Google 的一個(gè)團(tuán)隊(duì)正力于模塊化手機(jī)的開(kāi)發(fā)。Project Ara 目標(biāo)在于徹底動(dòng)搖 Android 世界,如果一切進(jìn)行順利,它有可能會(huì)來(lái)到人們面前。

Project Ara 部分

下一步何去何從?

遠(yuǎn)離JAVA

我們已經(jīng)解決了 IDE 和系統(tǒng)版本的大多數(shù)問(wèn)題,我們就可以關(guān)注 Android 其他方面的問(wèn)題。

恕我直言,在 Android 開(kāi)發(fā)最核心的問(wèn)題中最重要的問(wèn)題是 Java。對(duì)不起,Java Harmony,基于 Java 7 或 Java6,但它不是 Java。不要讓我放錯(cuò)——我堅(jiān)信Java是一門(mén)好的編程語(yǔ)言,但是我也認(rèn)為我們是時(shí)候打破常規(guī)了。我們需要開(kāi)始尋找另外一門(mén)編程語(yǔ)言來(lái)代替 Java 成為 Android 開(kāi)發(fā)的基本語(yǔ)言。

看看我們最重要的競(jìng)爭(zhēng)者—Apple。他們已經(jīng)介紹了一門(mén)全新的語(yǔ)言,叫做 Swift,它結(jié)合了數(shù)個(gè)其他語(yǔ)言(如 Python、Ruby 或 C#)的最優(yōu)特征。我們已經(jīng)比 iOS 開(kāi)發(fā)者開(kāi)發(fā)同一應(yīng)用需要更多的時(shí)間,而這會(huì)使我們更慢。

這就是為什么我們需要新事物的加入了。我們已經(jīng)有了關(guān)于哪個(gè)語(yǔ)言能夠代替Java的一些想法。我認(rèn)為是 Groovy。它的語(yǔ)法與 Java 非常相似(實(shí)際上,它是基于 Java 的),我們也有一些工作原型了。同時(shí),也不要忘了它是 Gradle 的主語(yǔ)言——所以,為什么不把它用于Android 開(kāi)發(fā)呢?或者也許是 Scala(它可以很快獲得新用戶),又或者是 Kotlin(Jake Wharton 最近寫(xiě)了一篇很好的關(guān)于用于 Android 的 Kotlin 的概論)?

數(shù)據(jù)庫(kù)管理變得更好

我要指出另一個(gè)問(wèn)題—數(shù)據(jù)庫(kù)管理 API。如果你再一次褻瀆 Andoird,看一眼我們的競(jìng)爭(zhēng)對(duì)手—iOS(核心數(shù)據(jù),將更加精確)——你會(huì)看到他們確實(shí)有著優(yōu)秀的方法和創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象的GUI 和 CRUD 方法,數(shù)據(jù)庫(kù)變化監(jiān)聽(tīng)器。但是如果你回頭看下默認(rèn)的 Android API ——我們還沒(méi)有遠(yuǎn)離寫(xiě)那些極大地影響我們開(kāi)發(fā)進(jìn)程的 SQL 命令。

調(diào)試 SQL 錯(cuò)誤不是一件容易的事—它非常消耗時(shí)間,我們也沒(méi)有查看數(shù)據(jù)庫(kù)數(shù)據(jù)的GUI。盡管也有一些不錯(cuò)的 ORM 庫(kù)(如 GreenDAO、ActiveAndroid 或 SugarORM),但是它們都有自己的問(wèn)題。我從沒(méi)有對(duì)它們完全滿意—他們要不是使用很復(fù)雜,要不就是丟失一些東西(如數(shù)據(jù)庫(kù)改變監(jiān)聽(tīng)器)。我注意到了 Realm for Android 和 DBFlow,我希望他們會(huì)解決我所有的問(wèn)題并且減少執(zhí)行時(shí)間。

結(jié)論

Android 在過(guò)去的幾年發(fā)生了巨大的改變。它已經(jīng)從一個(gè)簡(jiǎn)單的智能手機(jī)系統(tǒng)進(jìn)化為一個(gè)支持各種設(shè)備的強(qiáng)大系統(tǒng)。時(shí)間會(huì)告訴我們 Android 將會(huì)變成怎樣。誰(shuí)知道哪天我們會(huì)不會(huì)甚至可以用它來(lái)給核聚變反應(yīng)堆編程,或者給”終結(jié)者“編程。PS. 顯然終結(jié)者更有趣。


這是本人課余時(shí)間的翻譯,錯(cuò)誤很多,還請(qǐng)耐心指出,謝謝!

原文鏈接:https://www.infinum.co/the-capsized-eight/articles/the-past-present-and-future-of-android-development

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,361評(píng)論 25 708
  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,900評(píng)論 2 45
  • 詞 宴息 曲 周杰倫 《手寫(xiě)的從前》 舊時(shí)光被裁成老相片 日子曝光了幾張從前 我捧回遺失掉的容顏 就像多年前我捧起...
    宴息閱讀 710評(píng)論 2 3
  • 學(xué)習(xí)筆記 內(nèi)聯(lián)元素不能包含塊元素,它只能包含其它的內(nèi)聯(lián)元素??梢詫?shí)驗(yàn)在chrome中內(nèi)聯(lián)元素嵌套快元素,內(nèi)聯(lián)元素都...
    清水蘆葦閱讀 1,002評(píng)論 0 0
  • 一、常用函數(shù): 1、清洗處理類(lèi) Trim:清楚掉字符串兩邊的空格 Concatenate:合并單元格的內(nèi)容,適用于...
    踏雁尋花閱讀 478評(píng)論 0 1

友情鏈接更多精彩內(nèi)容