標籤:android blog http io os 使用 ar strong 檔案
臨近十一,項目接近上線,終於有些片段時間可以查看一些部落格。
這篇部落格是Android開發大牛Cyril Mottier在去年寫的部落格,我把它翻譯一下共用給國內志同道合的朋友,同時也是對自己一個很好的鍛煉機會。
原部落格的地址是:http://cyrilmottier.com/2013/06/27/a-productive-android-development-environment/,在國內是可以打得開、看得到的。
原文的翻譯,全文如下:
在過去的6個月,我的Android開發環境改變了很多。如果在Google+或者Twitter上有關注了我並閱讀過我最近有關開發的小建議的話(這個如果你翻得了牆的話,在Google+和Twitter上搜Cyril Mottier是可以關注的),你或許已經注意到了這些變化。我熱愛討論UI和效能,但也嚴肅地認為在友好開發和打磨Android應用的過程中,工具的確是關鍵的存在。在本博中,我將分享自己的經驗和每天編碼時使用的工具:
- 極其迅速的虛擬設備:Genymotion
- 功能強大的IDE:Android Studio
- 進階構建系統:Gradle
開發驚豔的應用需要精力、激情和奉獻。但我也相信:傑出的應用源於傑出的開發環境。的確,我問題認為應用是開發人員所使用工具的鏡像。運行順暢的模擬器導致更快的測試,依次地,更快的測試將產生更多精良的應用。同樣地,直觀而方便使用的開發工具將啟發並強化開發人員的UI/UX設計,更重要的是,這些設計將反映在他們的產品中。
簡單地說,我確信我們正在使用的開發工具的品質是我們進行中創造的應用的品質的直接結果,並且,這種看法反過來亦是如此。一直以來,我總是失望於原生的Android開發工具是多麼的粗俗和原始,但是,似乎有跡象顯示Google現在正異常明晰地轉向精良和高產的開發工具。除此之外,我還異常興奮地看到一些如Genymobile之類的公司正在助力於整個生態系統朝這個方向轉變。
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的構建系統:
- 最新版本構建系統的新特性:http://tools.android.com/tech-docs/new-build-system
- 新的Android SDK構建系統:http://www.youtube.com/watch?v=LCJAgPkpmR0
- 新構建系統文檔:http://tools.android.com/tech-docs/new-build-system/user-guide
- Gradle Wrapper文檔(Google推薦):http://www.gradle.org/docs/current/userguide/gradle_wrapper.html
- 包含大量有趣執行個體的壓縮檔:http://tools.android.com/tech-docs/new-build-system/gradle-samples-0.4.2.zip
總結:
本博所描述的全部工具使得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開發大牛們平時的神秘工作“窺一斑而知全豹”。
[翻譯]Android高效開發環境(Genymotion,Gradle,Andriod Studio)