高效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"
從根本上說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 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
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 每個 Android 開發者必須知道的資源集錦Android
- 15個必須知道的chrome開發者技巧Chrome
- 每個Android開發者必須知道的記憶體管理知識Android記憶體
- 每個 Android 開發者必須知道的訊息機制問題總結Android
- 15 個必須知道的 Chrome 開發工具技巧Chrome
- JS 開發者必須知道的十個 ES6 新特性JS
- 前端必須知道的除錯工具前端除錯
- Node.js新手必須知道的4個JavaScript概念Node.jsJavaScript
- 每一個C#開發者必須知道的13件事情C#
- 開發者測試:你必須知道 7 件事
- 3款你必須知道的爬蟲工具爬蟲
- Node.js開發者必須瞭解的4個JS要點Node.js
- JavaScript 面試必須知道的 10 個概念JavaScript面試
- Android:隨筆——Android必須知道的註解AnnotationsAndroid
- Web開發者和設計師必須要知道的 iOS 8 十個變化WebiOS
- Vue開發必須知道的36個技巧Vue
- 29 個你必須知道的 Linux 命令Linux
- Python你必須知道的十個庫Python
- 高效Android開發者的工具庫(譯)Android
- 你必須知道的 SmartSql !SQL
- 必須知道的28個HTML5特性、技巧HTML
- LLM部署,你必須要知道的幾個技巧!
- Perl開發者必須瞭解的14個資源
- 《Offer一籮筐》求職之前你必須知道的 4 件事!!求職
- 7款滲透測試工具,你必須知道!
- iOS程式設計師必須知道的Android要點iOS程式設計師Android
- 安卓開發者必備的六個工具安卓
- 安卓開發者必備的幾個工具安卓
- 細說反射,Java 和 Android 開發者必須跨越的坎反射JavaAndroid
- 這幾個python常用的庫你必須知道!Python
- JS高階之面試必須知道的幾個點JS面試
- Spring整合RabbitMQ-必須知道的幾個概念SpringMQ
- 29個網路營銷必須知道的資料
- 工作效率太低?這個目標管理神器工具你必須要知道
- 新媒體人必備:你必須知道的5款追熱點工具
- ?你必須知道的Java泛型Java泛型
- 前端er必須知道的Git地址及常用工具地址前端Git
- 【推薦】Python中你必須要知道的IDE工具!PythonIDE