高效Android開發者必須知道的4個工具

2016-03-31    分類:Android開發、推薦閱讀、程式設計開發、首頁精華1人評論發表於2016-03-31

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

移動app開發是一個漫長而費力的過程。然而,現在的企業總是希望能夠儘快釋出app。幸運的是,我們有很多幫助移動開發人員加快工作步伐的工具。

可用的工具集隨著移動平臺新版本的出現而不斷更新。是的,我們很難緊跟所有創新的腳步。這同樣適用於通常不被公佈的附加功能,儘管它們在常規作業中真的非常有用。

特別是,在建立移動app的時候,每個Android開發者必須解決一系列的問題。例如:

  • 在佈局執行到裝置之前先檢查它看上去如何
  • 執行程式碼檢查工具,如Lint:在編譯之前很難發現程式碼中的錯誤
  • 為點陣圖圖形的所有顯示解析度和狀態(啟用,禁用,按壓等)提供選擇選項,並將它們匯出到不同的數字裝置
  • 在除錯app構建中的開發階段檢測記憶體洩漏

有經驗的開發人員可以輕鬆地處理上述任務。然而,快速而高效解決緊迫問題的方法並不是每個人都知道的。下面讓我們為大家詳細介紹一些高效Android開發中必知的好工具。

1.Tools Attributes

任務:檢查UI元素在開發階段是什麼樣的,避免它們在最終構建中出意外。

解決方案:Tools Attributes

Tools Attributes可以使用額外的名稱空間來幫助管理Android Studio,這樣開發框架就不會傳輸執行時版本的屬性到最終構建。

看似Android開發人員只有一種方法來檢查成品佈局——在裝置上執行它。但是,你還可以使用內建於開發框架的Tools Attributes,在我們的例子中所使用的框架是Android Studio。

Tools Attributes的兩個主要類別:

  • Lint Attributes
  • Design Attributes

作為一個靜態分析工具,Lint被用於很多程式語言和軟體平臺。應用Lint Attributes有助於協調Lint工作。

下面是一些具體的Lint Attributes:

tools:ignore

tools:ignore屬性允許你建立Lint工具來禁止XML檔案中特定屬性的警告。例如:

tools:ignore="ContentDescription"

從根本上說tools:ignore類似於Java的@SupressWarning註解。

tools:targetApi

tools:targetApi和@TargetApi註解的工作方式相同,它顯示了app將使用的最低API版本。舉個例子,如果你正在應用Android KitKat,並且專案中最低的API版本是21。在這種情況下,你只要在程式碼中寫下tools:targetApi以及適合的版本號即可。這可以避免惱人的Lint警告。

tools:locale

這個屬性可以幫助你配置語言,並關閉關於錯誤拼寫的Lint警告。例如,如果你的字串僅包含西班牙文字,那麼你可以設定“西班牙語為預設”:

<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="es">

這樣,你就將西班牙語設定為預設語言,並且會檢查西班牙語的拼寫。

至於Design Attributes,可以大大便利建立開發框架中的XML佈局。

Design Attributes包括:

tools:context

tools:context可用來顯示開發框架選擇什麼活動類來實施佈局。使用這個屬性,Android Studio會自動選擇所需的主題用於預覽。

tools:showIn

tools:showIn有助於指出想要哪個佈局在預覽中顯示。例如:

tools:showIn="@layout/activity_main"

用來包括佈局。通過這樣做,開發人員就告訴了框架在哪個地方inflate什麼特定佈局。

tools:listitem, listheader, listfooter

你可以輕鬆地用特定佈局調整元件檢視,以便於分開list、header和footer的元素。例如:

tools:layout

使用tools:layout屬性,可以在執行時螢幕上顯示片段標籤佈局:

tools:layout="@android:layout/list_content"

因此,Tools Attributes可以幫助開發人員確保他們總是能夠遠離在最終app構建中顯示臨時文字的風險。

2.Support Annotations

任務:在編譯前檢查程式碼中的可能錯誤,並且為了防止錯誤,對程式碼做一個全面的審查。

解決方案:Android Support Library

Android Support Library Annotations可以幫助Android Studio提升程式碼。它從Android Studio 1.3.0開始有用。對於之前的版本,你需要單獨插入註解。

Android Support Annotations Library允許你在開發下找app中的bug。新增註解到專案,開發人員就可以讓保持純程式碼的任務變得更容易。

Support Annotations可分為:

  • Nullness Annotations
  • @Nullable, @NonNull

Nullness Annotations的目的是檢查null。它們可被應用於程式碼欄位,引數和方法。使用這些完全沒有註解的註解的主要區別在於,Nullness Annotations只定義變數是否具有“null”值。

  • Resource Annotations
  • @StringRes, @DrawableRes, @ColorRes

在編碼時,移動開發者經常引用字串、影像等資源。使用Resource Annotations可以強制輸入的文字。例如,通過新增resource annotation @ColorRes,當你試圖輸入顏色程式碼,而不是引用resource ID的時候,就會得到框架警告。沒有註解,IDE就不反應,因為程式碼以及resource ID的引用的期望型別為int。

  • ColorInt Annotations
  • @ColorInt

@ColorInt是@ColorRes的相反註解。在這種情況下,你定義方法不引用resource ID,而是引用具體的顏色。應用@ColorInt Annotations可以讓你快速找到錯誤,如果方法呼籲顏色資源ID的話。

  • Thread Annotations
  • @UiThread,@MainThread,@WorkerThread,@BinderThread

這些註解的目的是確定方法和特定型別的執行緒之間的連線。

  • Value Constraint Annotations
  • @Size(min = 5), @IntRange(from = 0, to = 12), @FloatRange(…)

在編碼時使用引數的正常值幾乎是不可能的。要定義可能的值的範圍,你可以新增@IntRange或@FloatRange註解。如果你想限制資料陣列、集合或執行緒中字串的大小或長度,那麼@Size註解將是一個極好的工具。

  • Permission Annotations
  • @RequestPremission(Manifest.permission.ACCESS_FINE_LOCATION)

使用Permission Annotations,你可以驗證一個許可權或一列許可權。每當app引用方法時,它會提供確認,並且這列許可權對你開放。如果許可權不存在,你會在程式碼中發現錯誤。

  • CallSuper Annotations
  • @CallSuper

當你需要呼叫方法的super實現時可以使用這個註解。

  • Enumerated Annotations
  • IntDef和StringDef

這種型別的註釋允許建立用於替換一些列舉常數值的廣義定義。例如,你有IceCreamFlavourManager類,它包括3個模式:VANILLA(香草),CHOCOLATE(巧克力)和STRAWBERRY(草莓)。使用@IntDef,你就可以建立一個名為@Flavour的新的註釋並定義它的具體數值。

3.Cut&Slice me

任務:接收點陣圖圖形所有顯示解析度的選項。

解決辦法:Photoshop外掛Cut&Slice me

Cut&Slice me僅允許通過按下一個按鈕來生成點陣圖圖形的切割。它用於實施所有顯示解析度和狀態(啟用,禁用,按下)。對於Android,resource會被自動傳送到不同的資料夾(drawable-xxhdpi, drawable-xhdpi,..),對於iOS,正確的名稱字首會被建立((@2x, @3x)。

我們從2013年開始活躍地使用外掛Cut&Slice me。並且它在Android以及iOS開發人員中很受歡迎。

4. LeakCanary

任務:及時檢測記憶體洩漏以防止OutOfMemoryError崩潰,並降低app記憶體溢位的風險。

解決方案:庫LeakCanary

LeakCanary有助於在除錯構建執行時檢測記憶體洩漏,並提供舒適的UI用於堆疊跟蹤歷史。

大多數時候,開發人員必須手動查詢記憶體洩漏。首先,他們要揭開OutOfMemoryError崩潰。然後使用不同的裝置,他們嘗試重現可導致錯誤的問題。此外,他們希望能夠跟隨會導致洩漏的操作的序列。他們創造了記憶體轉儲,並詳細研究以發現應該垃圾回收的物件。然後,他們製作從物件到垃圾回收的最短引用路徑,並且最後,他們得到激起記憶體洩漏的引用。

LeakCanary允許自動化所有的搜尋研究,並能很快找到所有的洩漏。還有一個附加優點涉及到傳送有關於洩漏的資料到伺服器,並排除反射引用和來自於方法的特定活動。

總之,我們可以說,Android開發者有各種不同的工具可用於促進app開發過程。特別是,對於移動開發人員,還存在著一系列被遺忘或甚至是不知道的解決方案,如Tools Attributes,Support Annotations, Cut&Slice me,LeakCanary,以及bug reporting systems。關於最後那個提到的工具,我們將在以後深入探討。選擇什麼工具主要取決於開發人員個人的喜好和具體的專案情況。

如果你願意告訴我你認為必須擁有的工具,那麼非常歡迎在評論中暢所欲言。期待聽到不同的聲音。

祝大家都能程式碼整潔,專案成功!

譯文連結:http://www.codeceo.com/article/4-tools-android-development.html
英文原文:4 Must-Know Tools For Effective Android Development
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章