Android Studio 2.2 preview 提供了幾個新玩具,非常有用,如下:
- Espresso Test Recorder
- Dependencies管理
- APK 分析器
- 查看 AndroidManifest.xml 的合并來源
Espresso Test Recorder
Espresso 是 UI 單元測試框架, Test Recorder 顧名思義就是用來錄制 UI 單元測試的工具,它包含這么幾個功能:
- 在真機或者模擬器上錄制 UI 的交互
- 在錄制過程中可以增加斷言
- 生成 Espresso 的單元測試代碼,可在此基礎上做二次開發
以googlesamples的android-topeka為例,來看看如何錄制單元測試。
-
Run->Record Espresso Test
在工具欄上點擊如上操作后,會出現終端設備的選擇窗口。
-
在真機或者模擬器上運行
選擇好運行的終端設備之后,將會運行 app,此時即可開始 UT 的錄制。
開始錄制 UT
app 運行起來之后,會出現錄制的窗口,窗口展示的是 UI 交互的操作流程,以及“增加斷言”和“完成錄制”的兩個按鈕。接下來開始進行交互,輸入 First Name 和 Last Initial,并選擇頭像,此時操作流如下圖所示:
點擊右下角的確定圖標,進入下一個界面。
- 增加斷言
點擊“Add Assertion”即可在錄制過程中增加斷言。在此處,我增加了兩個斷言,一個是斷言頭像區域已經正常顯示,二是斷言賬號區域顯示的文本為“geniusmart T”。
- 完成錄制并生成 UT 代碼
點擊“Complete Recording”,即可完成 UT 的錄制,并生成代碼。
我們可以基于這份代碼做二次開發,寫一些工具無法幫我們生成的斷言。
- 復用 UT
錄制結束后,整個錄制過程將以代碼的形式存在于androidTest文件夾中,我們可以反復運行 UT,驗證代碼的準確性。
Espresso Test Recorder 的錄制功能和二次開發,大大提高了寫 Espresso UT 的效率。即使你不太熟悉 Espresso 的語法,依然可以寫出覆蓋率較高的單元測試。
另外要強調的是,Espresso 解決的是 View 層的測試,以 MVP 來說,View 層依賴于 Model 層和 Presenter 層,假如你的 View 層需要發起網絡請求,UT 的錄制是充滿不確定性的,因為你不確定網絡請求是否能正常響應,以及響應結果是什么,因此需要其他兩層對網絡請求以及類似的問題做一些Mock或者Fake。關于這一點,筆者已經在《解讀Android官方MVP項目單元測試》詳細說明。
Dependencies 管理
Google 正在重寫項目結構對話框,用來解析項目中的依賴關系,并做更友好的展示。
-
打開"Project Structure"窗口
-
查看可更新的依賴
在"Messages"面板內,可以查看應用內的所有依賴,并自動識別本地倉庫和或程遠程jCenter 倉庫中是否有更新的版本。通過"Update All"的按鈕可更新所有依賴。
查看所有依賴和傳遞依賴關系
在"Dependencies"面板中,我們可以查看所有 Module 的依賴以及傳遞依賴關系,非常方便。而在以往我們只能使用命令行gradlew dependencies
來查看依賴關系。
注:本節的截圖來自Google I/O 的"What's new in Android development tools"演講主題,而在最新版的AS預覽版(無論是window還是mac)中,均找不到此功能的入口,官方對2.2預覽版介紹的文檔里也沒有正式介紹該功能,所以估計得過一段時間才能體驗。
APK 分析器
Google 在開發 Instant Run 時,為了弄清楚 APK 文件的內部機制,開發了新工具 APK 分析器。
- Build->Analyze APK
在工具欄上進行如上操作后,選擇 apk 文件,即可查看 apk 的分析結果,本節以 chrome.apk 為例。
- 查看文件大小
在分析結果中,可以查看各種文件的原始大小和下載大小,這可為我們的 apk 瘦身中提供數據支持, 幫我們定位哪些文件可以優化大小或者刪除。
-
查看資源文件
在 res中可以查看圖片和 layout 等文件。
查看值表
點擊resources.arsc,可以查看 string 、color 、layout 等的 ID 值。
- 查看 dex 文件
點擊 classes.dex 文件,可查看每個 Java 文件聲明的方法數和引用的方法數。
查看 AndroidManifest.xml 的合并來源
App 編譯后,清單文件會多出很多不是我們編寫的代碼(比如權限的聲明、四大組件的配置等),這部分代碼的來源為各種依賴庫。
新版的 IDE 提供了 "Merged Manifest"的功能,幫助我們查看清單文件的合并來源。
上圖中,可以清楚的看到網絡訪問權限是由play-services-ads:8.4.0
依賴庫提供的清單合并而來。
這幾個小玩具,尤其是單元測試的錄制和依賴關系的管理,都是五星好評,非常值得在項目開發中實踐。除此之外,2.2版本還提供了對 C++ 更友好的支持、以及可視化布局中的藍圖模式等,期待正式版的早日到來,也期待 Google 為我們帶來更多精益求精且越來越好玩的新功能。
參考文章
http://tools.android.com/tech-docs/test-recorder
http://v.youku.com/v_show/id_XMTYyNDcyNzUxMg==.html