安卓開發經驗分享:資源、UI、函數庫、測試、構建一個都不能少

除了高超的武藝,每位黑忍者還須要裝備最好的武器。在軟件開發的世界裏,好的工具能讓咱們的生活變得更輕鬆,在更短的時間裏寫出更棒的代碼。html

時光回到2008年,那時安卓還很年輕。只有幾個相關的博客和谷歌官方的幾個應用開發教程,沒有函數庫也沒有代碼生成器,甚至連成熟的設計模式也沒有(除了OOP和一些Java實踐)。今非昔比,咱們已經有了一個成熟的OS、很棒的開發工具、穩定的Eclipse插件和其餘IDE,數不清的開發書籍和相關的技術博客。java

這裏,我想分享本身在開發安卓應用時用到的工具和一些技巧,但願可讓你們少走一些彎路。android

1. 資源git

全部的UI指南均可以在這裏找到。有些時候咱們須要快速地找到資源,咱們須要工具欄圖標、主題、其餘圖標和各類安卓應用須要的設計資源。Android Assets Studio是最佳工具之一。它能夠爲你生成各類分辨率 (mdpi, hdpi, xhdpi)的啓動器、標籤、工具欄、菜單圖標,能夠按照你的配色生成主題,還能夠生成工具欄資源 適用於Sherlock Action Bar。轉換和縮放DPI是很痛苦的,因此你須要Android Dpi Calculatorgithub

2. UI組件spring

只要遵循安卓官方的UI設計理念,咱們就在重用UI組件。有不少優秀的通用組件能夠利用,固然你能夠基於他們開發適合本身的組件。你能夠在Android Views上找到他們。這裏我只提出幾個「必備的」組件:sql

  • Sherlock Action Bar:做者Jake Wharton。這個工具欄設計擴展了支持函數庫,能夠經過一個API操做各個版本的安卓工具欄。該函數庫會在合適的時候自動調用原生工具欄,也能夠在你佈局基礎上封裝一個自定義實現。這樣你就能夠很輕鬆地爲各類2.x及以上的安卓版本開發一個帶工具欄的應用。
  • Sliding Menu :這是時下很是流行的UI模式。Google Play市場上不少最佳應用都採用了這個UI模式,好比Google Plus、Facebook、Youtube以及其餘的應用程序都採用了Sliding Menu。
  • Cards:一個很是漂亮簡介的UI組件,可讓你的應用看起來和Google Home同樣。你能夠在屏幕上添加一個或者層疊若干個卡片。

3. 函數庫數據庫

安卓應用不只僅是UI,還包括了不少顏色和圖片資源。Optimus Prime(譯著:《變形金剛》裏面正義一方的領袖)曾經說過:「真相不僅是眼前所見」。咱們還須要編寫後臺代碼加載和緩存圖片、加快與服務器通信、編寫數據庫操做工具等等。接下來,咱們理所應當地會重用一些最佳實踐代碼。個人最愛(以及經常使用的工具)包括:編程

  • Android Universal Loader:高度可定製圖片下載和加載函數庫。支持從緩存或文件加載,配置很是簡單。
  • Spring for Android:若是你沒有據說過Spring…那麼請先去搜索一下。這個最流行的Java框架已經將他的產品線延伸到了移動領域。正如他們所說「移動就是將來」。Spring for android提供了幾個很棒的函數庫和框架,包括:
    • Spring RESTtemplate:一個很是流行的基於Java REST客戶端。Spring for Android RestTemplate模塊提供了一個能夠在安卓環境下工做的RestTemplate版本,爲你的安卓應用程序提供了一個很是靈活的REST API。
    • 驗證支持:OAuth是該領域快速崛起一個的協議。OAuth是一個開源協議,爲用戶提供第三方應用支持,提供對其餘網站受限資源或服務的訪問。
  • Square:他們在GitHub上發佈了不少優秀的函數庫。我最喜歡的是RetoFit,正如他的介紹那樣「一個類型安全的安卓和Java REST客戶端」。
  • OrmLite :編寫和維護數據庫表一般是很乏味的。OrmLite是一個支持安卓和Sqlite的ORM框架。一般完成這項工做會有數不清的備選工具,可是若是你正在建立一個須要很大數據庫的應用也許OrmLite會是你的最佳選擇。最好的事情是——OrmLite是經過註解驅動的。
  • AndroidAnnotations:UI和代碼之間的粘合劑,經過它能夠編寫更少的代碼而且輕鬆維護現存的代碼。

4. 測試設計模式

做爲開發者,咱們會不時地進行一些測試。畢竟,咱們必須確保開發的程序能正常工做。能遵循測試驅動開發(TDD)固然最好,可是有時候咱們只須要一些簡單的測試。這只是我我的的見解,最終選擇權始終在你手上。

  • Monkey:檢查應用是否會出現ANR(譯者注: ApplicationNotResponding應用程序無響應)的最簡單、快速和有效的方法。它會在你的應用上執行N次隨機點擊。你能夠在午休時運行一下Monkey。
  • Safe.i j i a m i:Android app漏洞檢測工具,能夠一鍵上傳測試出app存在的信息安全漏洞、簽名信息漏洞、源碼安全漏洞等,根據存在的漏洞能夠相應的提出對應的解決方案,強大的安卓開發必備工具之一。
  • Android Test :一個基於JUnit的安卓測試框架。它提供了全部類型的測試。你能夠爲UI/活動編寫測試用例。功能測試或者黑盒UI測試不要求測試者對應用的實現細節很是瞭解,只須要從用戶角度瞭解執行特定動做或者輸入特定內容會有怎樣的輸出結果。這個方法可讓開發和測試人員在你的組織裏獨立地工做。
  • Robotium :這是一個安卓自動化測試框架,支持原生應用和混合型應用。經過Robotium你能夠輕鬆地編寫功能強大、健壯性好的黑盒測試用例。測試開發者能夠編寫涵蓋各類安卓操做的功能測試、系統測試和驗收測試用例。此外,Robotium還有一個很是活躍的開發者論壇。
  • 雲端測試:你能夠在大量設備上運行你的測試並得到全部崩潰和錯誤信息。相關的工具備:

他們不是免費的,但確實好用。

5. 構建

這是我最喜歡的部分。咱們日復一日、年復一年地工做…..是時候展現本身的產品了。你的應用可能會分付費版、免費版或專屬版。他們會有通用的部分和一些專有邏輯。也許你會有一個爲100個客戶定製的應用,不一樣的包名、顏色、名稱、各類資源和產品風格…..我剛纔提到了構建版本嗎?一個開發版、不一樣階段的測試版、生產測試版、客戶Beta版…..(軟件版本命名)等等。對於不一樣的應用,有沒有頭疼的問題,如何保安全?在現在這個打包黨氾濫,各類不安全的移動互聯網時代,要是不重視安全這塊,簡直就是給本身挖坑!在此,我推薦個人經驗,解決方案就是尋求第三方服務平臺的加密技術,既能夠達到本身的目的,又節省了本身去研究的時間、精力!

在一天工做結束的時候,祕密就在維護和管理髮布流程。對於這項工做,我只推薦下面幾個構建工具。

  • Ant:我從Ant開始,由於它是Java開發者最熟悉的一個工具。若是你經過Ant構建一個安卓項目,你會編寫一個包含了全部默認構建任務的build.xml,它會爲你完成一些簡單的工做。若是你須要更高級的功能,深呼吸準備好進一步鑽研吧……若是要進行依賴管理,這是更艱鉅的任務。
  • Maven:個人一個朋友曾經說過:「Maven管理安卓應用只有Hello World」。Maven從未被谷歌或者安卓官方支持。社區開發的幾個Maven插件在安卓構建工具的每一個新版本上都會崩潰。Maven配置困難,但維護和運行很容易。它的依賴管理作的很好,可是不少安卓函數庫並無包含在Maven主倉庫。
  • Gradle:谷歌IO 2013發佈了Gradle。它是安卓官方支持的構建工具,也是Android Studio IDE的一部分。Spring和其餘幾個業界巨頭也都支持Gradle。我發現Gradle的語法簡單並且易於理解。我成功地構建了一個簡單項目,一個帶有複雜構建邏輯的項目並在24小時內從ant/maven上移植了3個項目到Gradle。Gradle的依賴管理很棒,支持從Maven和Ivy倉庫獲取(pulling)文件以及多項目構建。我得說:Gradle是新的安卓官方構建工具,相關的安卓插件在不久的未來應該會很快開發並支持,因此繼續關注。

我老是會鼓勵開發者使用並重用通過檢驗的概念、模式、框架和函數庫。固然,只是針對產品的發佈版本。你老是須要學習和實驗新工具和新框架。由於即便是最差勁的忍者也須要磨亮本身的武士刀:)

編程快樂!

相關文章
相關標籤/搜索