
Android Studio 2.2 preview 提供了幾個(gè)新玩具,非常有用,如下:
- Espresso Test Recorder
- Dependencies管理
- APK 分析器
- 查看 AndroidManifest.xml 的合并來(lái)源
Espresso Test Recorder
Espresso 是 UI 單元測(cè)試框架, Test Recorder 顧名思義就是用來(lái)錄制 UI 單元測(cè)試的工具,它包含這么幾個(gè)功能:
- 在真機(jī)或者模擬器上錄制 UI 的交互
- 在錄制過(guò)程中可以增加斷言
- 生成 Espresso 的單元測(cè)試代碼,可在此基礎(chǔ)上做二次開(kāi)發(fā)
以googlesamples的android-topeka為例,來(lái)看看如何錄制單元測(cè)試。
-
Run->Record Espresso Test
在工具欄上點(diǎn)擊如上操作后,會(huì)出現(xiàn)終端設(shè)備的選擇窗口。
-
在真機(jī)或者模擬器上運(yùn)行
選擇好運(yùn)行的終端設(shè)備之后,將會(huì)運(yùn)行 app,此時(shí)即可開(kāi)始 UT 的錄制。
開(kāi)始錄制 UT

app 運(yùn)行起來(lái)之后,會(huì)出現(xiàn)錄制的窗口,窗口展示的是 UI 交互的操作流程,以及“增加斷言”和“完成錄制”的兩個(gè)按鈕。接下來(lái)開(kāi)始進(jìn)行交互,輸入 First Name 和 Last Initial,并選擇頭像,此時(shí)操作流如下圖所示:

點(diǎn)擊右下角的確定圖標(biāo),進(jìn)入下一個(gè)界面。
- 增加斷言

點(diǎn)擊“Add Assertion”即可在錄制過(guò)程中增加斷言。在此處,我增加了兩個(gè)斷言,一個(gè)是斷言頭像區(qū)域已經(jīng)正常顯示,二是斷言賬號(hào)區(qū)域顯示的文本為“geniusmart T”。
- 完成錄制并生成 UT 代碼

點(diǎn)擊“Complete Recording”,即可完成 UT 的錄制,并生成代碼。

我們可以基于這份代碼做二次開(kāi)發(fā),寫(xiě)一些工具無(wú)法幫我們生成的斷言。
- 復(fù)用 UT
錄制結(jié)束后,整個(gè)錄制過(guò)程將以代碼的形式存在于androidTest文件夾中,我們可以反復(fù)運(yùn)行 UT,驗(yàn)證代碼的準(zhǔn)確性。
Espresso Test Recorder 的錄制功能和二次開(kāi)發(fā),大大提高了寫(xiě) Espresso UT 的效率。即使你不太熟悉 Espresso 的語(yǔ)法,依然可以寫(xiě)出覆蓋率較高的單元測(cè)試。
另外要強(qiáng)調(diào)的是,Espresso 解決的是 View 層的測(cè)試,以 MVP 來(lái)說(shuō),View 層依賴于 Model 層和 Presenter 層,假如你的 View 層需要發(fā)起網(wǎng)絡(luò)請(qǐng)求,UT 的錄制是充滿不確定性的,因?yàn)槟悴淮_定網(wǎng)絡(luò)請(qǐng)求是否能正常響應(yīng),以及響應(yīng)結(jié)果是什么,因此需要其他兩層對(duì)網(wǎng)絡(luò)請(qǐng)求以及類似的問(wèn)題做一些Mock或者Fake。關(guān)于這一點(diǎn),筆者已經(jīng)在《解讀Android官方MVP項(xiàng)目單元測(cè)試》詳細(xì)說(shuō)明。
Dependencies 管理
Google 正在重寫(xiě)項(xiàng)目結(jié)構(gòu)對(duì)話框,用來(lái)解析項(xiàng)目中的依賴關(guān)系,并做更友好的展示。
-
打開(kāi)"Project Structure"窗口
-
查看可更新的依賴
在"Messages"面板內(nèi),可以查看應(yīng)用內(nèi)的所有依賴,并自動(dòng)識(shí)別本地倉(cāng)庫(kù)和或程遠(yuǎn)程jCenter 倉(cāng)庫(kù)中是否有更新的版本。通過(guò)"Update All"的按鈕可更新所有依賴。
查看所有依賴和傳遞依賴關(guān)系

在"Dependencies"面板中,我們可以查看所有 Module 的依賴以及傳遞依賴關(guān)系,非常方便。而在以往我們只能使用命令行gradlew dependencies來(lái)查看依賴關(guān)系。
注:本節(jié)的截圖來(lái)自Google I/O 的"What's new in Android development tools"演講主題,而在最新版的AS預(yù)覽版(無(wú)論是window還是mac)中,均找不到此功能的入口,官方對(duì)2.2預(yù)覽版介紹的文檔里也沒(méi)有正式介紹該功能,所以估計(jì)得過(guò)一段時(shí)間才能體驗(yàn)。
APK 分析器
Google 在開(kāi)發(fā) Instant Run 時(shí),為了弄清楚 APK 文件的內(nèi)部機(jī)制,開(kāi)發(fā)了新工具 APK 分析器。
- Build->Analyze APK

在工具欄上進(jìn)行如上操作后,選擇 apk 文件,即可查看 apk 的分析結(jié)果,本節(jié)以 chrome.apk 為例。
- 查看文件大小

在分析結(jié)果中,可以查看各種文件的原始大小和下載大小,這可為我們的 apk 瘦身中提供數(shù)據(jù)支持, 幫我們定位哪些文件可以優(yōu)化大小或者刪除。
-
查看資源文件
在 res中可以查看圖片和 layout 等文件。
查看值表

點(diǎn)擊resources.arsc,可以查看 string 、color 、layout 等的 ID 值。
- 查看 dex 文件

點(diǎn)擊 classes.dex 文件,可查看每個(gè) Java 文件聲明的方法數(shù)和引用的方法數(shù)。
查看 AndroidManifest.xml 的合并來(lái)源
App 編譯后,清單文件會(huì)多出很多不是我們編寫(xiě)的代碼(比如權(quán)限的聲明、四大組件的配置等),這部分代碼的來(lái)源為各種依賴庫(kù)。
新版的 IDE 提供了 "Merged Manifest"的功能,幫助我們查看清單文件的合并來(lái)源。

上圖中,可以清楚的看到網(wǎng)絡(luò)訪問(wèn)權(quán)限是由play-services-ads:8.4.0依賴庫(kù)提供的清單合并而來(lái)。
這幾個(gè)小玩具,尤其是單元測(cè)試的錄制和依賴關(guān)系的管理,都是五星好評(píng),非常值得在項(xiàng)目開(kāi)發(fā)中實(shí)踐。除此之外,2.2版本還提供了對(duì) C++ 更友好的支持、以及可視化布局中的藍(lán)圖模式等,期待正式版的早日到來(lái),也期待 Google 為我們帶來(lái)更多精益求精且越來(lái)越好玩的新功能。
參考文章
http://tools.android.com/tech-docs/test-recorder
http://v.youku.com/v_show/id_XMTYyNDcyNzUxMg==.html




