高效Android開發者必須知道的4個工具
移動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"n
從根本上說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">n
這樣,你就將西班牙語設置為默認語言,並且會檢查西班牙語的拼寫。
至於Design Attributes,可以大大便利創建開發框架中的XML布局。
Design Attributes包括:
tools:context
tools:context可用來顯示開發框架選擇什麼活動類來實施布局。使用這個屬性,Android Studio會自動選擇所需的主題用於預覽。
tools:showIn
tools:showIn有助於指出想要哪個布局在預覽中顯示。例如:
tools:showIn="@layout/activity_main"n
用來包括布局。通過這樣做,開發人員就告訴了框架在哪個地方inflate什麼特定布局。
tools:listitem, listheader, listfooter
你可以輕鬆地用特定布局調整組件視圖,以便於分開list、header和footer的元素。例如:
tools:layout
使用tools:layout屬性,可以在運行時屏幕上顯示片段標籤布局:
tools:layout="@android:layout/list_content"n
因此,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. Leak Canary
任務:及時檢測內存泄漏以防止OutOfMemoryError崩潰,並降低app內存溢出的風險。
解決方案:庫LeakCanary
LeakCanary有助於在調試構建運行時檢測內存泄漏,並提供舒適的UI用於堆棧跟蹤歷史。
大多數時候,開發人員必須手動查找內存泄漏。首先,他們要揭開OutOfMemoryError崩潰。然後使用不同的設備,他們嘗試重現可導致錯誤的問題。此外,他們希望能夠跟隨會導致泄漏的操作的序列。他們創造了內存轉儲,並詳細研究以發現應該垃圾回收的對象。然後,他們製作從對象到垃圾回收的最短引用路徑,並且最後,他們得到激起內存泄漏的引用。
LeakCanary允許自動化所有的搜索研究,並能很快找到所有的泄漏。還有一個附加優點涉及到發送有關於泄漏的數據到伺服器,並排除反射引用和來自於方法的特定活動。
總之,我們可以說,Android開發者有各種不同的工具可用於促進app開發過程。特別是,對於移動開發人員,還存在著一系列被遺忘或甚至是不知道的解決方案,如Tools Attributes,Support Annotations, Cut&Slice me,LeakCanary,以及bug reporting systems。關於最後那個提到的工具,我們將在以後深入探討。選擇什麼工具主要取決於開發人員個人的喜好和具體的項目情況。
如果你願意告訴我你認為必須擁有的工具,那麼非常歡迎在評論中暢所欲言。期待聽到不同的聲音。
祝大家都能代碼整潔,項目成功!
閱讀原文 作者:小峰
推薦閱讀:
※Android Oreo 中對後台任務的限制
※PS4 Remote Play
※Google對於 material design 的積極度?
※Android Studio每日小技巧
※oppo find7有什麼亮點?