Android Studio 2.2 中幾個(gè)實(shí)用的新功能

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è)試。

  1. Run->Record Espresso Test



    在工具欄上點(diǎn)擊如上操作后,會(huì)出現(xiàn)終端設(shè)備的選擇窗口。

  2. 在真機(jī)或者模擬器上運(yùn)行



    選擇好運(yùn)行的終端設(shè)備之后,將會(huì)運(yùn)行 app,此時(shí)即可開(kāi)始 UT 的錄制。

  3. 開(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è)界面。

  1. 增加斷言

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

  1. 完成錄制并生成 UT 代碼

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



我們可以基于這份代碼做二次開(kāi)發(fā),寫(xiě)一些工具無(wú)法幫我們生成的斷言。

  1. 復(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 分析器。

  1. Build->Analyze APK

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

  1. 查看文件大小

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

  1. 查看資源文件



    在 res中可以查看圖片和 layout 等文件。

  2. 查看值表


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

  1. 查看 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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,745評(píng)論 25 709
  • Espresso Test Recorder的好處 直接錄制與APP的所有交互操作 支持在錄制過(guò)程中添加斷言 可直...
    Yuan_Jie閱讀 2,534評(píng)論 10 24
  • 太長(zhǎng)了,還是轉(zhuǎn)載吧...今天在看博客的時(shí)候,無(wú)意中發(fā)現(xiàn)了@Trinea在GitHub上的一個(gè)項(xiàng)目Android開(kāi)源...
    龐哈哈哈12138閱讀 20,383評(píng)論 3 283
  • 文/劉彩霞 “走,咱們走?!? 我扯了一下小胖的衣角,推了一把身邊的工作人員,轉(zhuǎn)身往外走。小胖一轉(zhuǎn)身,又蹭上...
    彩霞漫天閱讀 351評(píng)論 0 0
  • 加入到新部門(mén)得知我們部門(mén)有個(gè)人稱“姐姐”的男同事,對(duì)于此愛(ài)稱我一直保持著高度興趣,起初聽(tīng)其他同事講起此愛(ài)稱的原由是...
    畫(huà)鳴閱讀 322評(píng)論 0 0

友情鏈接更多精彩內(nèi)容