Android Studio 2.2 中几个实用的新功能

agxj9818 8年前
   <p><a href="/misc/goto?guid=4958973039491024395" rel="nofollow,noindex">Android Studio 2.2 preview</a> 提供了几个新玩具,非常有用,如下:</p>    <ul>     <li>Espresso Test Recorder</li>     <li>Dependencies管理</li>     <li>APK 分析器</li>     <li>查看 AndroidManifest.xml 的合并来源</li>    </ul>    <h2>Espresso Test Recorder</h2>    <p>Espresso 是 UI 单元测试框架, Test Recorder 顾名思义就是用来录制 UI 单元测试的工具,它包含这么几个功能:</p>    <ul>     <li>在真机或者模拟器上录制 UI 的交互</li>     <li>在录制过程中可以增加断言</li>     <li>生成 Espresso 的单元测试代码,可在此基础上做二次开发</li>    </ul>    <p>以googlesamples的 <a href="/misc/goto?guid=4958878125649723630" rel="nofollow,noindex">android-topeka</a> 为例,来看看如何录制单元测试。</p>    <ol>     <li> <p>Run->Record Espresso Test</p> <p><img src="https://simg.open-open.com/show/3993b6c7df3b4fd315066743187d05fa.png"></p> <p>在工具栏上点击如上操作后,会出现终端设备的选择窗口。</p> </li>     <li> <p>在真机或者模拟器上运行</p> <p><img src="https://simg.open-open.com/show/1742ef8a251d6406e499914de2b3faaf.png"></p> <p>选择好运行的终端设备之后,将会运行 app,此时即可开始 UT 的录制。</p> </li>     <li> <p>开始录制 UT</p> <p><img src="https://simg.open-open.com/show/b6050c5702c42a0b8a51998ca4c08700.png"></p> <p>app 运行起来之后,会出现录制的窗口,窗口展示的是 UI 交互的操作流程,以及“增加断言”和“完成录制”的两个按钮。接下来开始进行交互,输入 First Name 和 Last Initial,并选择头像,此时操作流如下图所示:</p> <p><img src="https://simg.open-open.com/show/6c6a6022af13aa322181fcf5859999cd.png"></p> <p>点击右下角的确定图标,进入下一个界面。</p> </li>     <li> <p>增加断言</p> <p><img src="https://simg.open-open.com/show/2aa96dc1a39f5de67c1b03472503d88b.png"></p> <p>点击“Add Assertion”即可在录制过程中增加断言。在此处,我增加了两个断言,一个是断言头像区域已经正常显示,二是断言账号区域显示的文本为“geniusmart T”。</p> </li>     <li> <p>完成录制并生成 UT 代码</p> <p><img src="https://simg.open-open.com/show/f4478737391c7fc87375a638c592a181.png"></p> <p>点击“Complete Recording”,即可完成 UT 的录制,并生成代码。</p> <p><img src="https://simg.open-open.com/show/ada21af21221838833fc80f6a7f60030.png"></p> <p>我们可以基于这份代码做二次开发,写一些工具无法帮我们生成的断言。</p> </li>     <li>复用 UT<br> 录制结束后,整个录制过程将以代码的形式存在于androidTest文件夹中,我们可以反复运行 UT,验证代码的准确性。</li>    </ol>    <p>Espresso Test Recorder 的录制功能和二次开发,大大提高了写 Espresso UT 的效率。即使你不太熟悉 Espresso 的语法,依然可以写出覆盖率较高的单元测试。</p>    <p>另外要强调的是,Espresso 解决的是 View 层的测试,以 MVP 来说,View 层依赖于 Model 层和 Presenter 层, 假如你的 View 层需要发起网络请求,UT 的录制是充满不确定性的,因为你不确定网络请求是否能正常响应,以及响应结果是什么, 因此需要其他两层对网络请求以及类似的问题做一些Mock或者Fake。关于这一点,笔者已经在 <a href="/misc/goto?guid=4959671448766211025" rel="nofollow,noindex">《解读Android官方MVP项目单元测试》</a> 详细说明。</p>    <h2>Dependencies 管理</h2>    <p>Google 正在重写项目结构对话框,用来解析项目中的依赖关系,并做更友好的展示。</p>    <ul>     <li>打开”Project Structure”窗口 <p><img src="https://simg.open-open.com/show/34aeb0685787b8825721ec1853e89991.jpg"></p> </li>     <li> <p>查看可更新的依赖</p> <p><img src="https://simg.open-open.com/show/ef7ed9b6154e08faaa4a6e3c8df03ad2.jpg"></p> <p>在”Messages”面板内,可以查看应用内的所有依赖,并自动识别本地仓库和或程远程jCenter 仓库中是否有更新的版本。通过”Update All”的按钮可更新所有依赖。</p> </li>     <li>查看所有依赖和传递依赖关系 <p><img src="https://simg.open-open.com/show/119d31682070fb3c35d2cf8a48b1bf6f.jpg"></p> </li>    </ul>    <p>在”Dependencies”面板中,我们可以查看所有 Module 的依赖以及传递依赖关系,非常方便。而在以往我们只能使用命令行 gradlew dependencies 来查看依赖关系。</p>    <p>注:本节的截图来自Google I/O 的”What’s new in Android development tools”演讲主题,而在最新版的AS预览版(无论是window还是mac)中,均找不到此功能的入口,官方对2.2预览版介绍的文档里也没有正式介绍该功能,所以估计得过一段时间才能体验。</p>    <h2>APK 分析器</h2>    <p>Google 在开发 Instant Run 时,为了弄清楚 APK 文件的内部机制,开发了新工具 APK 分析器。</p>    <ol>     <li> <p>Build->Analyze APK</p> <p><img src="https://simg.open-open.com/show/5230e46bf6bc7fcbe5741ec3b251718d.png"></p> <p>在工具栏上进行如上操作后,选择 apk 文件,即可查看 apk 的分析结果,本节以 chrome.apk 为例。</p> </li>     <li> <p>查看文件大小</p> <p><img src="https://simg.open-open.com/show/bb1e0c68dcbe6b471aa204397d88042a.png"></p> <p>在分析结果中,可以查看各种文件的原始大小和下载大小,这可为我们的 apk 瘦身中提供数据支持, 帮我们定位哪些文件可以优化大小或者删除。</p> </li>     <li> <p>查看资源文件</p> <p><img src="https://simg.open-open.com/show/20f487eaebd9cedba8fdad592115f1af.png"></p> <p>在 res中可以查看图片和 layout 等文件。</p> </li>     <li> <p>查看值表</p> <p><img src="https://simg.open-open.com/show/1bbdeb2892564c825ba9ad6c2bc97b12.png"></p> <p>点击resources.arsc,可以查看 string 、color 、layout 等的 ID 值。</p> </li>     <li> <p>查看 dex 文件</p> <p><img src="https://simg.open-open.com/show/27bbe9bbc8e3d8a0ee8a4ec3517cec74.png"></p> <p>点击 classes.dex 文件,可查看每个 Java 文件声明的方法数和引用的方法数。</p> </li>    </ol>    <h2>查看 AndroidManifest.xml 的合并来源</h2>    <p>App 编译后,清单文件会多出很多不是我们编写的代码(比如权限的声明、四大组件的配置等),这部分代码的来源为各种依赖库。</p>    <p>新版的 IDE 提供了 “Merged Manifest”的功能,帮助我们查看清单文件的合并来源。</p>    <p><img src="https://simg.open-open.com/show/076a3e2a7c97553c60b6aed960f994eb.png"></p>    <p>上图中,可以清楚的看到网络访问权限是由 play-services-ads:8.4.0 依赖库提供的清单合并而来。</p>    <p>这几个小玩具,尤其是单元测试的录制和依赖关系的管理,都是五星好评,非常值得在项目开发中实践。除此之外,2.2版本还提供了对 C++ 更友好的支持、以及可视化布局中的蓝图模式等,期待正式版的早日到来,也期待 Google 为我们带来更多精益求精且越来越好玩的新功能。</p>    <p>来自:http://www.androidchina.net/5670.html</p>    <p> </p>