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

   2016-11-03 0
核心提示:Android Studio 2.2 preview 提供了几个新玩具,非常有用,如下:Espresso Test Recorder Dependencies管理 APK 分析器 查看 AndroidManifest.xml 的合并来源Espresso Test RecorderEspresso 是 UI 单元测试框架, Test Recorder 顾名思义就是用来录制 UI 单

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 为例,来看看如何录制单元测试。

  1. Run->Record Espresso Test

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

    在工具栏上点击如上操作后,会出现终端设备的选择窗口。

  2. 在真机或者模拟器上运行

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

    选择好运行的终端设备之后,将会运行 app,此时即可开始 UT 的录制。

  3. 开始录制 UT

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

    app 运行起来之后,会出现录制的窗口,窗口展示的是 UI 交互的操作流程,以及“增加断言”和“完成录制”的两个按钮。接下来开始进行交互,输入 First Name 和 Last Initial,并选择头像,此时操作流如下图所示:

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

    点击右下角的确定图标,进入下一个界面。

  4. 增加断言

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

    点击“Add Assertion”即可在录制过程中增加断言。在此处,我增加了两个断言,一个是断言头像区域已经正常显示,二是断言账号区域显示的文本为“geniusmart T”。

  5. 完成录制并生成 UT 代码

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

    点击“Complete Recording”,即可完成 UT 的录制,并生成代码。

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

    我们可以基于这份代码做二次开发,写一些工具无法帮我们生成的断言。

  6. 复用 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”窗口
    Android Studio 2.2 中几个实用的新功能
  • 查看可更新的依赖

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

    在”Messages”面板内,可以查看应用内的所有依赖,并自动识别本地仓库和或程远程jCenter 仓库中是否有更新的版本。通过”Update All”的按钮可更新所有依赖。

  • 查看所有依赖和传递依赖关系
    Android Studio 2.2 中几个实用的新功能

在”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 分析器。

  1. Build->Analyze APK

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

    在工具栏上进行如上操作后,选择 apk 文件,即可查看 apk 的分析结果,本节以 chrome.apk 为例。

  2. 查看文件大小

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

    在分析结果中,可以查看各种文件的原始大小和下载大小,这可为我们的 apk 瘦身中提供数据支持, 帮我们定位哪些文件可以优化大小或者删除。

  3. 查看资源文件

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

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

  4. 查看值表

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

    点击resources.arsc,可以查看 string 、color 、layout 等的 ID 值。

  5. 查看 dex 文件

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

    点击 classes.dex 文件,可查看每个 Java 文件声明的方法数和引用的方法数。

查看 AndroidManifest.xml 的合并来源

App 编译后,清单文件会多出很多不是我们编写的代码(比如权限的声明、四大组件的配置等),这部分代码的来源为各种依赖库。

新版的 IDE 提供了 “Merged Manifest”的功能,帮助我们查看清单文件的合并来源。

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

上图中,可以清楚的看到网络访问权限是由 play-services-ads:8.4.0 依赖库提供的清单合并而来。

这几个小玩具,尤其是单元测试的录制和依赖关系的管理,都是五星好评,非常值得在项目开发中实践。除此之外,2.2版本还提供了对 C++ 更友好的支持、以及可视化布局中的蓝图模式等,期待正式版的早日到来,也期待 Google 为我们带来更多精益求精且越来越好玩的新功能。

文/geniusmart(简书作者)

原文链接:http://www.jianshu.com/p/bc9bbac5a170

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 说一说Android Studio和IDEA中一个很有用的内存调试插件
    说一说Android Studio和IDEA中一个很有用的内存
    JetBrains JVM Debugger Memory View plugin 在我最近的研发活动期间寻找新的工具,以提高我的开发经验,使Android Studio的生活更轻松,我发现一个有用的插件,我从来没有听说过。 这就是为什么,我决定写这个强大的工具,它如何帮助我与内存调试我的应用程
  • 安卓中通知功能的具体实现
    安卓中通知功能的具体实现
    通知[Notification]是Android中比较有特色的功能,当某个应用程序希望给用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知实现。使用通知的步骤1、需要一个NotificationManager来获得NotificationManager manager = (NotificationManager
    02-05 安卓开发
  • Android view系统分析-setContentView
    Android view系统分析-setContentView
    第一天上班,列了一下今年要学习的东西。主要就是深入学习Android相关的系统源代码,夯实基础。对于学习Android系统源代码,也没什么大概,就从我们平常使用最基础的东西学起,也就是从view这个切入点开始学习Android的源码,在没分析源码之前,我们有的时候
    02-05 安卓开发
  • 如何进行网络视频截图/获取视频的缩略图
    如何进行网络视频截图/获取视频的缩略图
    小编导读:获取视频的缩略图,截图正在播放的视频某一帧,是在音视频开发中,常遇到的问题。本文是主要用于点播中截图视频,同时还可以获取点播视频的缩略图进行显示,留下一个问题,如下图所示, 如果要获取直播中节目视频缩略图,该怎么做呢?(ps:直播是直
  • Android NDK 层发起 HTTP 请求的问题及解决
    Android NDK 层发起 HTTP 请求的问题及解决
    前言新的一年,大家新年快乐~~鸡年大吉!本次给大家带来何老师的最新文章~虽然何老师还在过节,但依然放心不下广大开发者,在此佳节还未结束之际,给大家带来最新的技术分享~ 事件的起因不说了,总之是需要实现一个 NDK 层的网络请求。为了多端适用,还是选择
  • SDK热更之如何在SDK代码中自动插桩及如何生成补
    写在前面本文是SDKHotfix相关的SDK热更系列文章中的一篇,以下为项目及系列文章相关链接:SDKHotfix整体介绍:http://blog.bihe0832.com/sdk_hotfix_project.htmlSDKHotfix对应github地址:https://github.com/bihe0832/SDKHoxFix这篇文章主要介绍一下SDK热更
  • 安装量破千万的第一个产品,我总结了3句话
    安装量破千万的第一个产品,我总结了3句话
    在今天的文章中,作者回顾了自己的第一个产品,他说“我做的第一款产品,是我的一块里程碑。”一起来看看~背景老牌大型互联网公司,部门内部创业的一个项目。我作为产品经理,也是第一次做产品经理,主导产品项目。实际上,项目初期包括我和安卓开发2个人。开
  • 移动周刊第 176 期:Android 知识梳理
    移动周刊第 176 期:Android 知识梳理
    写在前面 本期移动周刊第 176 期如约而至,聚焦 Android、iOS、VR/AR/MR、直播等前沿移动开发技术,收录一周最热点,解读开发技巧,每周三移动周刊抢先看,我们希望从中能够让你有一些收获,如果你有好的文章以及优化建议,请发送邮件至mobilehub@csdn.net,
  • Android插件化(六): OpenAtlasの改写aapt以防止资源ID冲突
    Android插件化(六): OpenAtlasの改写aapt以防
    引言Android应用程序的编译中,负责资源打包的是aapt,如果不对打包后的资源ID进行控制,就会导致插件中的资源ID冲突。所以,我们需要改写aapt的源码,以达到通过某种方式传递资源ID的Package ID,通过aapt打包时获取到这个Package ID并且应用才插件资源的命名
    02-05 安卓开发
  • Android架构(一)MVP架构在Android中的实践
    Android架构(一)MVP架构在Android中的实践
    为什么要重视程序的架构设计 对程序进行架构设计的原因,归根结底是为了 提高生产力 。通过设计是程序模块化,做到模块内部的 高聚合 和模块之间的 低耦合 (如依赖注入就是低耦合的集中体现)。 这样做的好处是使得程序开发过程中,开发人员主需要专注于一点,
    02-05 安卓开发
点击排行