Android高效開發環境(Genymotion,Gradle,Andriod Studio)

臨近十一,項目接近上線,終於有些碎片時間能夠查看一些博客。html

這篇博客是Android開發大牛Cyril Mottier在去年寫的博客,我把它翻譯一下共享給國內志同道合的朋友,同時也是對本身一個很好的鍛鍊機會。android

原博客的地址是:http://cyrilmottier.com/2013/06/27/a-productive-android-development-environment/,在國內是能夠打得開、看獲得的。服務器

原文的翻譯,全文以下:session

在過去的6個月,個人Android開發環境改變了不少。若是在Google+或者Twitter上有關注了我並閱讀過我最近有關開發的小建議的話(這個若是你翻得了牆的話,在Google+和Twitter上搜Cyril Mottier是能夠關注的),你或許已經注意到了這些變化。我熱愛討論UI和性能,但也嚴肅地認爲在友好開發和打磨Android應用的過程當中,工具的確是關鍵的存在。在本博中,我將分享本身的經驗和天天編碼時使用的工具:app

  • 極其迅速的虛擬設備:Genymotion
  • 功能強大的IDE:Android Studio
  • 高級構建系統:Gradle

開發驚豔的應用須要精力、激情和奉獻。但我也相信:傑出的應用源於傑出的開發環境。的確,我問題認爲應用是開發人員所使用工具的鏡像。運行順暢的模擬器致使更快的測試,依次地,更快的測試將產生更多精良的應用。一樣地,直觀而用戶友好的開發工具將啓發並強化開發人員的UI/UX設計,更重要的是,這些設計將反映在他們的產品中。框架

簡單地說,我確信咱們正在使用的開發工具的質量是咱們正在進行創造的應用的質量的直接結果,而且,這種見解反過來亦是如此。一直以來,我老是失望於原生的Android開發工具是多麼的粗俗和原始,可是,彷佛有跡象顯示Google如今正異常明晰地轉向精良和高產的開發工具。除此以外,我還異常興奮地看到一些如Genymobile之類的公司正在助力於整個生態系統朝這個方向轉變。ide

Genymotion工具

你極可能對Genymotion這個名字全然不知。但我向你保證這種狀況不會持續過久。一旦嘗試一下Genymotion,你將很快學會記得它。簡而言之,Genymotion是默認Android模擬器功能齊全的替代品(因爲最近Android版本嚴重的性能缺失,默認模擬器已經變得沒法使用!)。Genymotion可能從http://www.genymotion.com/下載。Genymotion基於Virtual Box,所以,它將虛擬而非模擬一個Android設備。性能

我不認爲本身是一個虛擬化/模擬化專家,可是,看起來模擬化再也不是一個有效選項。至於今天,iOS SDK提供了模擬器(瞄準主機體系結構來編譯應用),最新的Windows Phone SDK綁定了事實上是虛擬機的Windows Phone模擬器。我感受虛擬化是如下兩個問題的最佳解決方案:模擬器固有的性能問題和常爲人詬病的」二進制差別」問題。學習

若是已經嘗試過了Genymotion,你就已經清楚了存在於默認模擬器、硬件設備和Genymotion之間的關鍵不一樣:速度! Genymotion極其流暢,使得Android開發成爲了一件愉悅之事。Genymotion解除了從工做站轉向硬件設備來進行測試的負擔。多虧了這個小小的使人拍手稱讚的軟件,本身工做站上的一切開發都顯示那麼順利。

爲了證實Genymotion是多麼的快速,在本人的硬件設備(Nexus 4)和運行在本人MacBook Pro上面的一個Genymotion實例上面分別運用一些指令測試運行了一個小的測試工程。這些輸出信息是不言自明的,Genymotion上面運行的指令測試的速度至少是Nexus 4上面的10倍快。

我第一次嘗試使用Genymotion的時候它仍是以AndroVm的名字爲人所知。在那時,這個產品就顯然擁有很大潛力的一件工具。可是,打磨的缺失和設置的晦澀使得它在大多數開發環境裏徘徊不前。最新的軟件版本清晰地代表Genymobile(Genymotion背後的公司)決定推進Genymotion到下一層次。

在看過Genymotion小組在Droidcon France進行的新穎的演示 以後,我決定再試一次它。在不到一個小時的把玩和測試以後,我決定在之後開發的每一天使用它。多虧了Genymotion,我我的的硬件設備只有在現時/最後開發階段的測試時才顯示必要。

速度是Genymotion最重要的方面之一。而後,它仍是提供了其它的一些好的特性:

  • 經測試可靠的 ROMs: 這個小組正在努力工做,以確保Genymotion ROM兼容CTS。他們最新宣佈Genymotion已經經過了AOSP CTS的99.4%。咱們能夠期待Genymotion ROM很快就徹底兼容於CTS。
  • 硬件管理:你已經能夠用很酷的方式模擬大量的東西。我最喜歡的東西之一是GPS感應器管理。你只需在地圖上移動一個標記,以後Genymotion發送恰當的GPS定位。這在開發定位應用時極其方便。
  • 支持Google Play Services:一些綁定了Google應用的Genymotion ROM,具備和真實設備徹底相同的特性。由此,你能夠安裝並測試諸如Google Play Services同樣的框架(frameworks)。它讓你可以測試本身的應用,即便這些應用使用了Google Map API v2或者定位API。
  • 徹底整合了Andorid Studio和Eclipse:Genymotion在啓動或建立虛擬設備的眨眼間展現了簡單的UI。若是你不喜歡這個小小的軟件,你能夠選擇使用Eclipse或Android Studio/IntelliJ插件。
  • 平臺獨立性:就像你能夠在Windows、Mac OS X或者Linux開發Android應用同樣,Genymotion伴隨了不一樣平臺的版本:每一個平臺/體系結構一個版本。
  • 支持Shell操做:Genymotion提供了極小的Shell,使得你能夠以腳本的方式改變感應器的狀態。

咱們必須清楚,擁有快速的虛擬設備並不意味着你沒必要在起初設備上進行測試。它只是個好機會用更快的方式來塑造原型和打磨應用。然而,真實設備纔是保證在真實情形下一切事情流暢運行的最佳方式。

Genymotion仍然有一些不足:少許的Bugs、缺失的特性以及使人失望的UI(我是這麼以爲,畢竟,這還只是個測試版本)。可是,使人稱讚的迅疾、真正的潛力以及對開發環境輕易的整合,都使得它成爲你工具箱中明智的選擇。我我的瞭解一些Genymotion小組中的傢伙,並對Genymotion的將來信心滿滿。他們努力工做以改善這款工具——一個極可能是自Android2008年發佈以來在模擬/虛擬/仿真技術上面的最大進步。

Android Studio

大約5年前,我開始開發個人首款Andriod應用:一個校園項目。在那時,framework只能做爲早期的翻閱使用。我因以下兩個重要緣由而選擇Eclipse做爲個人主要IDE:

  • Eclipse是計算機科學課上所要求的IDE。
  • Eclipse是惟一綁定了Android插件的IDE。

大約6個月前,我轉向了IntelliJ。時間再近一點(自Google I/O以後),轉向了Android Studio。這些轉變以後的緣由邏輯清晰。事實上,對於個人大多數項目而言,Eclipse開始變成了使人討厭的東西。主要是Eclipse運行太慢且常常崩潰。在用了幾乎5年Eclipse以後,轉向IntelliJ/Android Studio並不容易但也並不痛苦。這個學習弧線十分的使人印象深入:習慣新的快捷鍵、新的外觀和這個IDE的一些主要特性花費了我一整個周。

除了快和穩定以外,Android Studio相較於Eclipse有幾個優點,你能夠經過下載、把玩這個軟件或者觀看Google I/O Keynote「What's new in Android Development tools」 session Tor Norbye & Xaview Duchohet來查找。

當開發中的Android Studio依然是」I/O預覽版」時,版本號爲0.1.6。版本號也許不涉及最終的版本,Android Studio依賴於世俗的肩膀。若是你不喜歡Eclipse或者正在尋找新的東西,你絕對應該嘗試一個Andrioid Studio。

Gradle build system

在Google I/O大會上,我想要了解有關Andriod開發工具的全部改進。我顯然參加了全部有關新的基於Gradle的構建系統的話題討論。儘管Gradle插件依然處於開發階段(在開發時是0.4.3),我已經在強烈地鼓動人們在他們的項目中使用它。

我最近把全部的的項目都轉向了Gradle插件。在這以後的緣由是:這個新的構建系統最終要處理Android開發人員可能須要的全部特性。此外,Android Studio結合了Gradle才能最好使用。再說一次,這個插件固然不完美,但我確信Android工具小組正努力打磨這個新的構建系統。

我最欣賞的幾個特性是:

  • 包重命名:若是想要你的應用在相同的設備上同時有測試版和發佈版(甚至更多),這將特別有用。
  • 強大的依賴管理:儘管對於Maven用戶而言,這並不新穎,可是這對於使用當前基於Ant構建系統的開發人員而言,倒是一個巨大的跨越。
  • 完善和開發類似的構建:新的構建系統的設計目的是:在可持續性完善的服務器上執行的構建要類似於那些創建在開發人員本身的工做站上的構建。
  • 易用且可共享的簽名配置:新的插件共享工程的簽名配置。若是你想要調試鍵能夠被你的小組中的全部開發人員使用,這將極其有用。
  • 產品口味(Flavors):口味是特殊版本的應用,這個應用能夠用不一樣的包名、版本名和版本號等。在你須要幾個APK輸出時:免費版和收費版時,這極可能有用。

若是你想要發送反饋、報告bugs、尋求幫助等,我鼓勵你加入adt-dev Google group。可能性很大,一些人像Xavier Ducrohet(Android工具小組的Google工程師)將幫助你(固然,萬一你提出了完整且準確的問題)。這是一些重要的連接,幫你轉向你的基於Gradle的構建系統:

總結:

本博所描述的所有工具使得Android開發系統比以前更高效、更高產。他們全是進行中的工做,但卻已經提早證實Android擁有明亮的將來。除了來自於Genymobile十分強大的Genymotion,新的Google助力的工具如Andrid Studio和新的Gradle構建系統等對於自證前程的Android開發工具而言是極其明智的舉措。

若是你依舊在考慮作什麼,我對你的建議是:不要猶豫了,不要再想了,經過轉向這些極其精良的工具來改革你的Android開發環境,而且幫助這些工具變得比如今的好還要好!

PS:

儘管Genymotion很好理解且已不證自明,我依然嚴格地認爲Genymotion的UI能夠更簡單些。從功能和特性的角度來看,Genymotion已經極其優秀。可是縮減因爲當前低效UI所致使的摩擦可使Genymotion真正地具備革命性和突破性。

一些APIs和framework諸如Google地圖Android API須要API鍵,應用基於該鍵來對APK進行簽名。在項目層次上共享開發人員間的鍵,或許能夠減輕來自於管理幾個API鍵的負擔。

***********************************************************

這篇博文只是做者的經驗總結,整體上來講,沒有什麼二貨,但也是值得拜讀的,同是也可對Android開發大牛們平時的神祕工做「窺一斑而知全豹」。

相關文章
相關標籤/搜索