Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Android Studio 版本说明

Android Studio 是用于开发 Android 应用的官方 IDE,包含构建 Android 应用所需的一切。

要获取最新版本,请依次点击 Help > Check for updates(在 Mac 上,请依次点击 Android Studio > Check for updates)。

您也可以在此处下载 Android Studio

如果您在 Android Studio 中遇到问题,请查看已知问题问题排查页面。

要了解与各版本有关的最新资讯,包括每个预览版中的重要修正的列表,请参阅版本更新

要了解 Android Plugin for Gradle 的新变化,请查看其版本说明

3.4(2019 年 4 月)

Android Studio 3.4 是一个主要版本,包含各种新功能和改进。

3.4.2(2019 年 7 月)

本次要更新修正了多个问题并进行了多项性能改进。要查看重要问题修复列表,请阅读版本更新博客上的相关博文。

3.4.1(2019 年 5 月)

本次要更新修正了多个问题并进行了多项性能改进。要查看重要问题修复列表,请阅读版本更新博客上的相关博文。

3.4.0 已知问题

  • 将应用部署到搭载 Android Q 测试版的设备时,系统会停用分析功能。

  • 使用数据绑定库时,LiveDataListener.onChanged() 可能会因 NPE 而失败。针对此问题的修复程序将包含在 Android Studio 3.4.1 中,并且已在 Android Studio 3.5 的最新预览版中提供。(请参阅问题 #122066788

IntelliJ IDEA 2018.3.4

核心 Android Studio IDE 已通过 2018.3.4 版本进行了更新,增加了 IntelliJ IDEA 中的相关改进。

Android Gradle 插件 3.4.0 更新

要了解 Android Gradle 插件 3.4.0 中的新功能,请参阅其版本说明

新的“Project Structure”对话框

新的“Project Structure”对话框 (PSD) 可让您更轻松地更新依赖项并配置项目的不同方面(例如模块、编译变体、签名配置和编译变量)。

您可以从菜单栏中依次选择 File > Project Structure 以打开 PSD,也可以通过按 Ctrl+Shift+Alt+S(在 Windows 和 Linux 上)或 Command+;(分号)(在 macOS 上)来打开 PSD。下方显示了 PSD 的一些新部分和更新部分的说明。

变量

使用 PSD 新增的变量部分,您可以创建和管理编译变量,例如用于确保依赖项的版本号在项目中保持一致的编译变量。

  • 快速查看和修改项目的 Gradle 编译脚本中已有的编译变量。
  • 直接从 PSD 添加新的项目级或模块级编译变量。

模块

配置应用于现有模块中所有编译变体的属性,或者从 Modules 部分向项目添加新模块。例如,您可以在此处配置 defaultConfig 属性或管理签名配置。

依赖项

检查并以图形方式呈现项目依赖项图中的每个依赖项(如 Gradle 在项目同步时所解析的那样),具体步骤如下:

  1. 在 PSD 的左侧窗格中,选择 Dependencies
  2. Modules 窗格中,选择您想要检查已解析的依赖项的模块。
  3. 在 PSD 的右侧,打开 Resolved Dependencies 窗格,如下所示。

您还可以快速搜索依赖项并将其添加到项目中,具体方法是:首先从 PSD 的 Dependencies 部分选择一个模块,点击 Declared Dependencies 部分中的 (+) 按钮,然后选择要添加的依赖项类型。

根据您选择的依赖项的类型,您应该会看到一个类似如下的对话框,它可以帮助您向模块中添加依赖项。

编译变体

在 PSD 的这一部分中,为项目中的每个模块创建和配置编译变体和产品风格。您可以添加清单占位符,添加 ProGuard 文件以及分配签名密钥等。

建议

您可以在 Suggestions 部分中查看为项目依赖项和编译变量建议的更新,如下图所示。

新的资源管理器

资源管理器是一个新的工具窗口,用于在应用中导入、创建、管理和使用资源。您可以从菜单栏中依次选择 View > Tool Windows > Resource Manager 来打开工具窗口。通过资源管理器,您可以执行以下操作:

  • 直观地呈现资源:您可以预览可绘制资源、颜色和布局,以快速找到所需的资源。
  • 批量导入:您可以一次导入多项可绘制资源,具体方法是:将这些资源拖放到资源管理器工具窗口中或使用 Import drawables 向导。要访问向导,请选择工具窗口左上角的 (+) 按钮,然后从下拉菜单中选择 Import Drawables
  • 将 SVG 转换为 VectorDrawable 对象:您可以使用 Import Drawables 向导将 SVG 图片转换为 VectorDrawable 对象。
  • 拖放资源:在 Resource Manager 工具窗口中,您可以将可绘制资源拖放到布局编辑器的设计视图和 XML 视图上。
  • 查看备用版本:现在,您可以在 Tool 窗口中双击某项资源来查看该资源的备用版本。此视图会显示您创建的不同版本以及包含的限定符。
  • 平铺和列表视图:您可以在工具窗口中更改视图,以便以不同的排列方式显示您的资源。

要了解详情,请阅读有关如何管理应用资源的指南。

在分析和调试 APK 时检查版本号

当您为 APK 内的 .so 共享库提供调试符号文件时,Android Studio 会验证所提供的符号文件的版本号是否与 APK 内 .so 库的版本号匹配。

如果您通过版本号编译 APK 中的原生库,Android Studio 会检查符号文件中的版本号是否与原生库中的版本号匹配,如果不匹配,会拒绝该符号文件。如果您不是使用版本号编译的原生库,则提供不正确的符号文件可能会导致调试出现问题。

R8 默认处于启用状态

R8 将脱糖、压缩、混淆、优化和 dex 整合到一个步骤中,从而显着提高了编译性能。R8 是在 Android Gradle 插件 3.3.0 中引入的,对于使用插件 3.4.0 及更高版本的应用和 Android 库项目,R8 现已默认处于启用状态。

下图简要介绍了 R8 引入之前的编译流程。

在 R8 之前,ProGuard 是一个与 dex 和脱糖不同的编译步骤。

现在,有了 R8,可以在一个步骤中完成脱糖、压缩、混淆、优化和 dex (D8),如下图所示。

有了 R8,可以在一个编译步骤中执行脱糖、压缩、混淆、优化和 dex。

请注意,R8 旨在与您现有的 ProGuard 规则配合使用,因此您可能不需要采取任何操作即可从 R8 中受益。但是,由于它对专为 Android 项目设计的 ProGuard 而言是一项不同技术,因此压缩和优化可能会导致移除 ProGuard 可能没有的代码。因此,在这种不太可能的情况下,您可能需要添加其他规则以在编译输出中保留这些代码。

如果您在使用 R8 时遇到问题,请阅读 R8 兼容性常见问题解答,以检查是否有针对您的问题的解决方案。如果没有记录在案的解决方案,请报告错误。您可以停用 R8,为此只需将以下其中一行添加到项目的 gradle.properties 文件即可:

# Disables R8 for Android Library modules only.
    android.enableR8.libraries = false
    # Disables R8 for all modules.
    android.enableR8 = false
    

现在,导航组件支持的所有参数类型都在导航编辑器中受支持。要详细了解支持的类型,请参阅在平台之间传递数据

布局编辑器方面的改进

布局编辑器中的 Attributes 面板已经简化为单个页面,您只需展开该页面中的各部分即可查看可配置的属性。Attributes 窗格还包含以下更新:

  • 新的 Declared Attributes 部分列出了布局文件指定的属性,可让您快速添加新属性。
  • 现在,Attributes 窗格还会在每个属性旁边显示指示器(当该属性的值是资源引用时,这些指示器是非中空的 ,在其他情况下则是空的 )。
  • 现在,系统会突出显示带有错误或警告的属性。以红色突出显示表示错误(例如,使用无效布局值时),以橙色突出显示表示警告(例如,使用硬编码值时)。

用于快速导入依赖项的新意图操作

如果您开始在代码中使用某些 Jetpack 和 Firebase 类,则新的意图操作会建议将所需的 Gradle 库依赖项添加到项目中(如果您尚未这样做)。例如,如果您希望不必先导入所需的 android.arch.work:work-runtime 依赖项就可引用 WorkManager 类,则意图操作可让您只需点击一次即可轻松实现此目的,如下所示。

特别是,由于 Jetpack 将支持库重新打包为易于管理和更新的独立软件包,因此该意图操作可帮助您快速添加您想要使用的 Jetpack 组件所需的依赖项。

3.3(2019 年 1 月)

Android Studio 3.3 是一个主要版本,包含各种新功能和改进。

3.3.2(2019 年 3 月)

本次要更新修正了多个问题并进行了多项性能改进。要查看重要问题修复列表,请阅读版本更新博客上的相关博文。

3.3.1(2019 年 2 月)

本次要更新修正了多个问题并进行了多项性能改进。

IntelliJ IDEA 2018.2.2

核心 Android Studio IDE 已通过 2018.2.2 版本进行了更新,增加了 IntelliJ IDEA 中的相关改进。

Android Gradle 插件更新

要了解 Android Gradle 插件的新变化,请查看其版本说明

借助导航编辑器,您可以使用导航架构组件快速直观呈现导航内容并将其编译到您的应用中。

如需了解详情,请参阅使用导航架构组件实现导航

删除未使用的 Android Studio 目录

当您首次运行 Android Studio 的主要版本时,它会查找包含缓存、设置、索引和日志的目录,以确定找不到对应安装内容的 Android Studio 的版本。然后,Delete Unused Android Studio Directories 对话框中会显示这些未使用目录的位置、大小和最后修改时间,并提供删除它们的选项。

Android Studio 考虑删除的目录如下所示:

  • Linux:~/.AndroidStudio[Preview]_X.Y_
  • Mac:~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview]_X.Y_
  • Windows:%USER%\.AndroidStudio[Preview]_X.Y_

Lint 方面的改进

从 Gradle 调用时,Lint 的运行速度明显加快 - 对于较大的项目,Lint 的运行速度最多可提高四倍。

“Create New Project”向导

Create New Project 向导具有全新外观,并且包含有助于简化新 Android Studio 项目创建过程的更新。

如需了解详情,请参阅创建项目

分析器更新

Android Studio 3.3 包含对多个分析器的更新。

改进了性能

根据用户反馈,使用分析器时的渲染性能得到了极大的改善。请继续提供反馈,特别是在您依旧看到性能问题时。

分析器内存分配跟踪选项

为了在分析时提高应用性能,Memory Profiler 现在会默认定期对内存分配进行采样。如果需要,您可以在搭载 Android 8.0(API 级别 26)或更高版本的设备上进行测试时使用 Allocation Tracking 下拉列表来更改此行为。

您可以从 Allocation Tracking 下拉列表中选择以下模式:

  • Full:捕获所有对象内存分配。请注意,如果您有一个分配了大量对象的应用,则可能会在分析时遇到重大性能问题。
  • Sampled:捕获对象内存分配的周期性采样。这是默认行为,在分析时对应用性能的影响较小。对于在短时间内分配大量对象的应用,您可能会遇到一些性能问题。
  • Off:关闭内存分配。如果尚未选择,系统会在记录 CPU 时自动启用此模式,然后在记录完成后恢复先前的设置。您可以在 CPU 记录配置对话框中更改此行为。

    跟踪会同时影响 Java 对象和 JNI 引用。

检查帧渲染数据

CPU Profiler 中,您现在可以检查 Java 应用在主界面线程和 RenderThread 上渲染每个帧所需的时间。在调查会导致界面卡顿和帧速率偏低的瓶颈时,此数据可能很有用。例如,每个所用时间超过 16 毫秒且需要保持顺畅帧速率的帧都以红色显示。

要查看帧渲染数据,请使用允许您跟踪系统调用的配置记录跟踪。记录跟踪后,在 FRAMES 部分下查找沿记录时间轴的每个帧的相关信息,如下所示。

要详细了解如何调查和解决帧速率问题,请阅读呈现速度缓慢

事件时间轴中的片段

事件时间线现在会显示附加和分离片段的时间。此外,将鼠标悬停在某个片段上时,工具提示会显示片段状态。

在 Network Profiler 中查看连接负载的格式化文本

以前,Network Profiler 仅显示来自连接负载的原始文本。Android Studio 3.3 现在会默认格式化某些文本类型(包括 JSON、XML 和 HTML)。在 ResponseRequest 标签中,点击 View Parsed 链接可显示格式化文本,点击 View Source 链接可显示原始文本。

如需了解详情,请参阅使用 Network Profiler 检查网络流量

自动下载 SDK 组件

当您的项目需要 SDK 平台、NDK 或 CMake 中的 SDK 组件时,Gradle 现在会尝试自动下载所需的软件包,前提是您之前已使用 SDK 管理器接受了所有相关的许可协议。

如需了解详情,请参阅使用 Gradle 自动下载缺失的软件包

对 Clang-Tidy 的支持

Android Studio 现在支持使用 Clang-Tidy 对包含本机代码的项目进行静态代码分析。要启用对 Clang-Tidy 的支持,请将 NDK 更新为 r18 或更高版本。

然后,您可以启用或重新启用检查,方法是打开 SettingsPreferences 对话框,然后依次转到 Editor > Inspections > C/C++ > General > Clang-Tidy。在 SettingsPreferences 对话框中选择此检查时,您还可以在最右侧面板的 Option 部分下看到已启用和停用的 Clang-Tidy 检查列表。要启用其他检查,请将其添加到列表中,然后点击 Apply

要使用其他选项配置 Clang-Tidy,请点击 Configure Clang-Tidy Checks Options,然后在随即打开的对话框中添加这些选项。

移除了针对 C++ 自定义的选项

已从 Customize C++ Support 对话框中移除以下选项:

  • Exceptions Support (-fexceptions)
  • Runtime Type Information Support (-ftti)

系统已对通过 Android Studio 创建的所有项目启用相应行为。

CMake 版本 3.10.2

SDK 管理器现在包含 CMake 版本 3.10.2。请注意,Gradle 默认仍会使用版本 3.6.0。

要为 Gradle 指定要使用的 CMake 版本,请将以下代码添加到模块的 build.gradle 文件中:

android {
        ...
        externalNativeBuild {
            cmake {
                ...
                version "3.10.2"
            }
        }
    }
    

要详细了解如何在 build.gradle 中配置 CMake,请参阅手动配置 Gradle

用于指定最低 CMake 版本的新“+”语法

在主模块的 build.gradle 文件中指定 CMake 的版本时,现在可以附加“+”以便与 CMake 的 cmake_minimum_required() 命令的行为保持一致。

Android App Bundle 现在支持免安装应用

Android Studio 现在允许您编译 Android App Bundle,并且完全支持 Google Play 免安装体验。换句话说,您现在可以编译和部署单个 Android Studio 项目中的已安装应用和免安装体验,并将其纳入单个 Android App Bundle 中。

如果您要使用 Create New Project 对话框创建新的 Android Studio 项目,请确保选中 Configure your project > This project will support instant apps 旁边的复选框。然后,Android Studio 会像往常一样创建新的应用项目,但会在清单中包含以下属性,以便向应用的基本模块添加免安装应用支持:

<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    

然后,您可以创建支持免安装体验的动态功能模块,方法是从菜单栏中依次选择 File > New > New Module,然后从 Create New Module 对话框中选择 Instant Dynamic Feature Module。请注意,创建此模块也会使应用的基本模块支持免安装体验。

要将应用作为免安装应用部署到本地设备,请修改您的运行配置,然后选中 General > Deploy as instant app 旁边的复选框。

单变体项目同步

将项目与编译配置同步,是让 Android Studio 了解项目结构的重要步骤。不过,对于大型项目来说,此过程可能非常耗时。如果您的项目使用了多个编译变体,那么您现在可以限定仅同步当前所选的变体,从而优化项目同步操作。

您需要结合使用 Android Studio 3.3 或更高版本与 Android Gradle 插件 3.3.0 或更高版本,才能启用此优化。满足这些要求后,IDE 会在您同步项目时提示您启用此优化。默认情况下,新项目也会启用此优化。

要手动启用此优化功能,请依次点击 File > Settings > Experimental > Gradle(在 Mac 上,请依次点击 Android Studio > Preferences > Experimental > Gradle),然后选中 Only sync the active variant 复选框。

如需了解详情,请参阅启用单变体项目同步

提供快速反馈

如果您已选择分享使用情况统计信息以帮助改进 Android Studio,则会在 IDE 窗口底部的状态栏中看到以下两个新图标:

只需点击最能代表您目前使用 IDE 的体验的图标来提供反馈即可。在您执行此操作后,IDE 会发送使用情况统计信息,让 Android Studio 团队能够更好地了解您的感受。在某些情况下,例如,当您表示在使用 IDE 时有不好的体验时,您将有机会提供进一步的反馈。

如果尚未启用分享使用情况统计信息,您可以通过以下步骤予以启用:打开 Settings 对话框(在 Mac 上,则打开 Preferences),依次转到 Appearance & Behavior > System Settings > Data Sharing,然后选中 Send usage statistics to Google

3.2(2018 年 9 月)

Android Studio 3.2 是一个主要版本,包含各种新功能和改进。

3.2.1(2018 年 10 月)

这项 Android Studio 3.2 更新进行了下列更改和修复:

  • 捆绑的 Kotlin 版本现为 1.2.71。
  • 默认的编译工具版本现为 28.0.3。
  • 在导航库中,参数类型已从 type 重命名为 argType
  • 下列错误已得到修复:
    • 使用数据绑定库时,带有下划线的变量名称会导致编译错误。
    • CMake 会导致 IntelliSense 和其他 CLion 功能失败。
    • 添加 SliceProvider 会导致在未使用 androidx.* 库的项目中出现编译错误。
    • 一些 Kotlin 单元测试没有运行。
    • 数据绑定问题会导致 PsiInvalidElementAccessException
    • <merge> 元素有时会导致布局编辑器崩溃。

3.2.0 已知问题

注意:以下问题已在 Android Studio 3.2.1 中得到解决

  • 我们强烈建议您不要使用 Kotlin 版本 1.2.70。

    Kotlin 版本 1.2.61 修复了一个可能会导致 Android Studio 挂起的错误,但 Kotlin 1.2.70 不包含此修复

    但是,Kotlin 版本 1.2.71 及更高版本确实包含此修复。

  • 虽然您通常不需要指定编译工具版本,但如果在使用 Android Gradle 插件 3.2.0 时将 renderscriptSupportModeEnabled 设为 true,则需要在每个模块的 build.gradle 文件中包含以下代码:

    android.buildToolsVersion "28.0.3"

什么是全新的 Assistant

全新的 Assistant 会通知您 Android Studio 中的最新变化。

当您在全新安装或更新后启动 Android Studio 时,如果系统检测到有新信息需要显示,Assistant 便会打开。您也可以依次选择 Help > What's new in Android Studio 来打开 Assistant。

Android Jetpack

Android Jetpack 提供各种组件、工具和指南以消除重复性任务,来帮助加速 Android 开发,让您能够更快速、更轻松地构建高品质的可测试应用。Android Studio 进行了以下更新以支持 Jetpack。如需了解详情,请参阅 Jetpack 文档

全新的导航编辑器与 Android Jetpack 的导航组件相集成,可提供图形视图以供您为应用创建导航结构。导航编辑器简化了应用内目标之间导航的设计和实现。

在 Android Studio 3.2 中,导航编辑器是一项实验性功能。要启用导航编辑器,请依次点击 File > Settings(在 Mac 上,则依次点击 Android Studio > Preferences),选择左侧面板中的 Experimental 类别,选中 Enable Navigation Editor 旁边的复选框,然后重新启动 Android Studio。

如需了解详情,请参阅导航编辑器文档

AndroidX 迁移

作为 Jetpack 的一部分,我们正在将 Android 支持库迁移到使用 androidx 命名空间的全新 Android 扩展库。如需了解详情,请参阅 AndroidX 概览

Android Studio 3.2 利用一项新的迁移功能来帮助您完成此过程。

要将现有项目迁移到 AndroidX,请依次选择 Refactor > Migrate to AndroidX。如果您有任何尚未迁移到 AndroidX 命名空间的 Maven 依赖项,则 Android Studio 编译系统还会自动转换这些项目依赖项。

Android Gradle 插件提供以下可在 gradle.properties 文件中设置的全局标记:

  • android.useAndroidX:当设为 true 时,此标记表示您想立即开始使用 AndroidX。如果缺少此标记,则 Android Studio 会假定此标记已设为 false
  • android.enableJetifier:当设为 true 时,此标记表示您想要获得相关的工具支持(通过 Android Gradle 插件),以便将现有第三方库当作针对 AndroidX 编写的库进行自动转化。如果缺少此标记,则 Android Studio 会假定此标记已设为 false

当您使用 Migrate to AndroidX 命令时,这两个标记都会设为 true

如果您想立即开始使用 AndroidX 库,而不需要转换现有的第三方库,只需将 android.useAndroidX 标记设为 true,并将 android.enableJetifier 标记设为 false

Android App Bundle

Android App Bundle 是一种全新的上传格式,其中包含您应用的所有经过编译的代码和资源,但 APK 生成及签名则延后到 Google Play 商店来完成。

Google Play 的新应用服务模式名为“Dynamic Delivery”,该机制使用您的 App Bundle 针对每位用户的设备配置生成并提供经过优化的 APK,因此每位用户都只需下载运行您的应用所需的代码和资源。您无需再构建、签署和管理多个 APK,而用户也可以获得更小、更优化的下载内容。

此外,您还可以向应用项目添加动态功能模块,并将其包含在 App Bundle 中。借由 Dynamic Delivery,您的用户可以按需下载和安装您应用的动态功能。

要构建软件包,请依次选择 Build > Build Bundle(s)/APK(s) > Build Bundle(s)

如需了解详情,包括与构建和分析 Android App Bundle 有关的说明,请参阅 Android App Bundle

布局编辑器中的示例数据

许多 Android 布局都包含运行时数据,而这可能导致在应用开发的设计阶段难以以图形的方式呈现布局的外观和风格。现在,您可以轻松地在填充有示例数据的布局编辑器中查看视图预览。在添加视图时, 按钮会显示在设计窗口中的视图下方。点击此按钮即可设置设计时视图属性。您可以选择各种各样的示例数据模板,并指定用于填充相应视图的示例项目的数量。

要尝试使用示例数据,请将 RecyclerView 添加到新布局,点击视图下方的设计时属性按钮 ,然后从示例数据模板的轮播界面中选择一个选项。

切片

“切片”提供了一种全新的方式,让您能够将应用的部分功能嵌入到 Android 上的其他界面中。例如,借助切片,您可以在 Google 搜索建议中显示应用功能和内容。

Android Studio 3.2 不但包含一个内置模板,可以帮助您使用新的切片提供商 API 来扩展您的应用,而且还包含新的 Lint 检查功能,可以确保您在构建切片时遵循最佳做法。

要开始使用,请右键点击一个项目文件夹,然后依次选择 New > Other > Slice Provider

如需了解详情,包括如何测试切片交互,请参阅切片入门指南

Kotlin 1.2.61

Android Studio 3.2 捆绑了 Kotlin 1.2.61,并且新的 Android SDK 可与 Kotlin 更好地集成。如需了解详情,请参阅 Android 开发者博客

IntelliJ IDEA 2018.1.6

核心 Android Studio IDE 已通过 2018.1.6 版本进行了更新,增加了 IntelliJ IDEA 中的相关改进。

Android Profiler

请试用 Android Studio 3.2 中的以下全新 Android Profiler 功能。

会话

您现在可以将分析器数据保存为会话,以便日后重新访问和检查。分析器会一直保存您的会话数据,直到您重启 IDE 为止。

在您记录方法轨迹捕获堆转储后,IDE 会将相应数据(以及您应用的网络活动)作为单独的条目添加到当前会话,并且您可以轻松地在记录之间来回切换以比较数据。

系统跟踪

CPU Profiler 中,选择新的 System Trace 配置即可检查设备的系统 CPU 和线程活动。此轨迹配置是基于 systrace 构建的,并且可用于调查系统级问题,例如界面卡顿。

使用此轨迹配置时,您可以使用原生跟踪 API 检测 C/C++ 代码或使用 Trace 类检测 Java 代码,从而直观地标记分析器时间轴上的重要代码例程。

在 Memory Profiler 中检查 JNI 引用

如果您将应用部署到搭载 Android 8.0(API 级别 26)或更高版本的设备,那么您现在可以使用 Memory Profiler 来检查应用 JNI 代码的内存分配情况。

在您的应用运行时,选择您想检查的一部分时间轴,然后从类列表上方的下拉菜单中选择 JNI heap,具体如下所示。然后,您可以像往常一样检查堆中的对象,并双击 Allocation Call Stack 标签中的对象,以查看 JNI 引用已分配并发布到了代码中的哪些位置。

导入、导出和检查内存堆转储文件

您现在可以导入、导出和检查使用 Memory Profiler 创建的 .hprof 内存堆转储文件。

要导入 .hprof 文件,只需点击分析器的 Sessions 窗格中的 Start new profiler session ,然后选择 Load from file 即可。然后,您可以像在任何其他堆转储中一样检查 Memory Profiler 中的数据。

要保存堆转储数据以供日后查看,请使用 Sessions 窗格中 Heap Dump 条目右侧的 Export Heap Dump 按钮。在随即显示的 Export As 对话框中,使用 .hprof 文件扩展名保存文件。

在应用启动过程中记录 CPU 活动

您可以在应用启动过程中记录 CPU 活动,具体操作如下所示:

  1. 从主菜单中依次选择 Run > Edit Configurations
  2. 在所需运行配置的 Profiling 标签下,选中 Start recording a method trace on startup 旁边的方框。
  3. 从下拉菜单中选择要使用的 CPU 记录配置。
  4. 依次选择 Run > Profile,将您的应用部署到搭载 Android 8.0(API 级别 26)或更高版本的设备上。

导出 CPU 轨迹

在您使用 CPU Profiler 记录 CPU 活动后,您可以将相应数据导出为 .trace 文件,以便与他人共享或日后进行检查。

要在记录 CPU 活动后导出轨迹,请执行以下操作:

  1. 右键点击您想从 CPU 时间轴中导出的记录。
  2. 从下拉菜单中选择 Export trace
  3. 转到您想保存文件的位置,然后点击 Save

导入和检查 CPU 轨迹文件

您现在可以导入和检查使用 Debug APICPU Profiler 创建的 .trace 文件(目前,您无法导入系统轨迹记录)。

要导入轨迹文件,请点击分析器的 Sessions 窗格中的 Start new profiler session 图标 ,然后选择 Load from file。然后,您可以按照与往常相似的方式检查 CPU Profiler 中的数据,但以下情况例外:

  • CPU 活动未显示在 CPU 时间轴上。
  • 线程活动时间轴仅指明了可在哪里获取各线程的轨迹数据,而未指明实际线程状态(如运行中、等待中或休眠中)。

使用 Debug API 记录 CPU 活动

现在,您可以使用 Debug API 设置您的应用以便开始和停止在 CPU Profiler 中记录 CPU 活动。在您将应用部署到某个设备后,分析器会在您的应用调用 startMethodTracing(String tracePath) 时自动开始记录 CPU 活动,并会在您的应用调用 stopMethodTracing() 时停止记录。在记录使用此 API 触发的 CPU 活动时,CPU Profiler 会将 Debug API 显示为所选的 CPU 记录配置。

Energy Profiler

Energy Profiler 能够以图形方式显示您应用的估算耗电量,以及影响耗电量的系统事件(例如唤醒锁定、闹钟和作业)。

当您在搭载 Android 8.0 (API 26) 或更高版本的关联设备或 Android 模拟器中运行您的应用时,Energy Profiler 便会显示为 Profiler 窗口底部的新行。

点击 Energy 行即可将 Energy Profiler 视图最大化。将鼠标指针放在时间轴中的条形上方,即可查看 CPU、网络和位置信息 (GPS) 资源,以及相关系统事件。

影响耗电量的系统事件会在 Energy 时间轴下方的 System 时间轴中指明。当您在 Energy 时间轴中选择时间范围时,事件窗格中会显示指定时间范围内的系统事件的详细信息。

要查看系统事件(如唤醒锁定)的调用堆栈和其他详细信息,请在事件窗格中选择该事件。要转到负责系统事件的代码,请双击调用堆栈中的相应条目。

Lint 检查

Android Studio 3.2 包含许多用于 Lint 检查的新功能和经过改进的功能。

新的 Lint 检查功能可帮助您查找和识别常见的代码问题,包括与潜在易用性问题有关的警告,以及与潜在安全漏洞有关的高优先级错误。

针对 Java/Kotlin 互操作性的 Lint 检查

为确保 Java 代码与 Kotlin 代码之间的良好互操性,新的 Lint 检查会强制执行 Kotlin 互操作指南中所述的最佳做法。这些检查的示例包括查找是否存在空性注释、是否使用了 Kotlin 硬关键字、是否将 lambda 参数放置在最后等。

要启用这些检查,请依次点击 File > Settings(在 Mac 上,则依次点击 Android Studio > Preferences)打开 Settings 对话框,依次转到 Editor > Inspections > Android > Lint > Interoperability > Kotlin Interoperability 部分,然后选择要启用的规则。

要为命令行编译启用这些检查,请将以下代码添加到 build.gradle 文件:

android {
        lintOptions {
            check 'Interoperability'
        }
    }
    

针对切片的 Lint 检查

针对切片的新 Lint 检查可以确保您构建切片的方式正确无误。例如,如果您没有将主要操作分配到某个切片,Lint 检查就会向您发出警告。

新的 Gradle 目标

借助新的 lintFix Gradle 任务,您可以将 Lint 检查建议的所有安全修正直接应用于源代码。会建议您应用安全修正的 Lint 检查示例如下:SyntheticAccessor

元数据更新

各种元数据(例如服务投射检查)已针对 Lint 检查进行更新,以便配合 Android 9(API 级别 28)使用。

如果在新变体上运行 Lint,则会收到警告

Lint 现在会记录与基准一起记录的变体和版本,如果您在与基准一起创建的变体以外的其他变体上运行 Lint,Lint 就会向您发出警告。

改进了现有 Lint 检查

Android Studio 3.2 包含对现有 Lint 检查的许多改进。例如,资源周期检查现在适用于其他资源类型,并且翻译检测器现在可以在编辑器中实时查找缺失的翻译。

更容易找到问题 ID

问题 ID 现在会显示在更多位置,其中包括 Inspection Results 窗口,让您可以更轻松地找到所需信息,以便通过 build.gradle 中的 lintOptions 启用或停用特定检查。

如需了解详情,请参阅通过 Gradle 配置 Lint 选项

Data Binding V2

Data Binding V2 现已默认处于启用状态,并与 V1 兼容。这意味着,如果您拥有使用 V1 编译的库依赖项,则可以将其用于使用 Data Binding V2 的项目。不过请注意,使用 V1 的项目无法利用使用 V2 编译的依赖项。

D8 脱糖

在 Android Studio 3.1 中,我们已将脱糖步骤作为一项实验性功能集成到 D8 工具中,这能够减少总体构建时间。使用 D8 进行脱糖的功能在 Android Studio 3.2 中默认处于开启状态。

新的代码压缩器

R8 是一种用于执行代码压缩和混淆的新工具,替代了 ProGuard。您只需将以下代码添加到项目的 gradle.properties 文件中,即可开始使用 R8 的预览版本:

android.enableR8 = true
    

更改了针对多 APK 的默认 ABI

构建多个 APK 并让每个 APK 都分别定位到不同的 ABI 时,插件在默认情况下不再针对以下 ABI 生成 APK:mipsmips64armeabi

如果您想构建定位这些 ABI 的 APK,则必须使用 NDK r16b 或更低版本,并在 build.gradle 文件中指定相应 ABI,具体代码如下所示:

    splits {
        abi {
            include 'armeabi', 'mips', 'mips64'
            ...
        }
    }
    

改进了针对 CMake 编译文件的编辑器功能

如果您使用 CMake 将 C 和 C++ 代码添加到您的项目,则 Android Studio 现在包含经过改进的编辑器功能供您修改 CMake 编译脚本,例如:

  • 语法突出显示和代码自动填充:IDE 现在会突出显示常用的 CMake 命令并提出相应的代码自动填充建议。此外,您只需点击某个文件,同时按 Ctrl 键(在 Mac 上,则按 Command 键)即可转到此文件所在的位置。
  • 代码重新格式化:您现在可以使用 IntelliJ 的代码重新格式化选项将代码样式应用于 CMake 编译脚本。
  • 安全重构:IDE 内置的重构工具现在还会检查您是否正在重命名或删除 CMake 编译脚本中引用的文件。

在以前版本的 Android Studio 中使用 Project 窗口时,您只能浏览和检查从本地项目构建的库中包含的标头文件。在此版本中,您现在还可以查看和检查导入到应用项目的外部 C/C++ 库依赖项中包含的标头文件。

如果您已在项目中添加 C/C++ 代码和库,请在主菜单中依次选择 View > Tool Windows > Project,打开 IDE 左侧的 Project 窗口,然后从下拉菜单中选择 Android。在 cpp 目录中,应用项目范围内的所有标头都位于各本地 C/C++ 库依赖项的 include 节点下,具体如下所示。

原生多 dex 处理默认处于启用状态

以前版本的 Android Studio 会在将应用的调试版本部署到搭载 Android API 级别 21 或更高级别的设备时启用原生多 dex 处理。现在,无论您是要部署到设备还是要构建 APK 以供发布,Gradle 的 Android 插件都会针对所有设置为 minSdkVersion=21 或更高版本的模块启用原生多 dex 处理。

已将 AAPT2 移到 Google 的 Maven 代码库中

从 Android Studio 3.2 开始,AAPT2 (Android Asset Packaging Tool 2) 的来源为 Google 的 Maven 代码库。

要使用 AAPT2,请确保您的 build.gradle 文件中包含 google() 依赖项,具体代码如下所示:

      buildscript {
          repositories {
              google() // here
              jcenter()
          }
          dependencies {
              classpath 'com.android.tools.build:gradle:3.2.0'
          }
      } allprojects {
          repositories {
              google() // and here
              jcenter()
      }
    

新版本的 AAPT2 修正了许多问题,包括改进了在 Windows 上对非 ASCII 字符的处理。

移除了按需配置

Configure on demand 偏好设置已从 Android Studio 中移除。

Android Studio 不再将 --configure-on-demand 参数传递给 Gradle。

ADB Connection Assistant

新的 ADB Connection Assistant 提供了逐步说明,可以帮助您通过 Android 调试桥 (ADB) 关联来设置和使用设备。

要启用此 Assistant,请依次选择 Tools > Connection Assistant

ADB Connection Assistant 在 Assistant 面板中的一系列页面中提供了说明、环境控件以及关联设备列表。

模拟器的改进

您现在可以随时在 Android 模拟器中保存和加载 AVD (Android Virtual Device) 快照,以便快速轻松地让模拟设备返回已知状态以进行测试。在使用 AVD Manager 修改 AVD 时,您可以指定在 AVD 启动时加载哪个 AVD 快照。

用于保存、加载和管理 AVD 快照的控件现在位于模拟器的 Extended controls 窗口的 Snapshots 标签中。

如需了解详情,请参阅快照

要详细了解模拟器中的新变化以及变更内容,请参阅模拟器版本说明

3.1(2018 年 3 月)

Android Studio 3.1.0 是一个主要版本,包含各种新功能和改进。

3.1.4(2018 年 8 月)

这项 Android Studio 3.1 更新进行了下列更改和修复:

  • 捆绑的 Kotlin 版本现为 1.2.50。
  • 使用 kotlin-stdlib-jdk* artifacts(而非已弃用的 kotlin-stdlib-jre* 软件工件)创建新项目。
  • 对 ProGuard 规则的 R8 解析已得到改进。
  • 下列错误已得到修复:
    • 尝试运行 Kotlin Main 类失败,并出现错误:"Error: Could not find or load main class..."
    • R8 在执行某些优化时进入了无限循环。
    • Run 窗口中使用 Rerun failed tests 命令有时会错误地返回“No tests were found”消息。
    • D8 未正确处理 invoke-virtual 实例,导致 VerifyError 出现崩溃:invoke-super/virtual can't be used on private method
    • 数据绑定编译器依赖于旧版本的 com.android.tools:annotations。现在,编译器会使用基础项目的工具注释(如果可用)。
    • 使用分析器时,Android Studio 在 Fragment 过渡期间崩溃。
    • 在调试包含文本框的布局时,调试器发生崩溃。
    • D8 无法读取某些带有特殊字符的 ZIP 文件。

3.1.3(2018 年 6 月)

这项 Android Studio 3.1 更新修复了下列错误:

  • 内存泄漏导致 Android Studio 在您使用布局编辑器后变得缓慢且无响应。此更新包含针对大多数此类问题的修复程序。我们打算很快发布另一项更新来解决额外的内存泄漏问题。
  • 一些使用 D8 构建的应用在部分 Verizon Ellipsis 平板电脑上出现崩溃。
  • 在搭载 Android 5.0 或 5.1(API 级别 21 或 22)的设备上,使用 D8 构建的应用的安装失败并出现 INSTALL_FAILED_DEXOPT 错误。
  • 一些使用 OkHttp 库并使用 D8 构建的应用在搭载 Android 4.4(API 级别 19)的设备上出现崩溃。
  • Android Studio 有时无法启动,并在类初始化期间出现 ProcessCanceledException(对于 com.intellij.psi.jsp.JspElementType)。

3.1.2(2018 年 4 月)

这项 Android Studio 3.1 更新修复了下列错误:

  • 在某些情况下,Android Studio 会在退出时无限期挂起。
  • 启用 Instant Run 后,使用源集配置的编译失败,并显示以下消息:

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • 启用 Instant Run 后,由 Run 命令触发的新 Kotlin 项目编译失败。
  • 修改 build.gradle 文件时,输入某个字符后要过很长一段时间才会在屏幕上显示该字符。
  • 在一些具有大量模块或外部依赖项的项目中,在 dex 期间发生编译失败,并显示以下错误消息:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • D8 主 DEX 列表的计算方式没有考虑到一些反射调用。

此更新还包含一些更改,这些更改使得在某些情况下从 Gradle 运行 Lint 检查的速度更快。

3.1.1(2018 年 4 月)

这项 Android Studio 3.1 更新修复了下列错误:

  • 在某些情况下,在 Android Studio 3.1 中首次打开在 Android Studio 3.0 中创建的项目时,Gradle-aware Make 任务已从 Run/Debug ConfigurationsBefore launch 区域中移除。因此,点击 RunDebug 按钮时没有编译项目,这反过来会导致使用 Instant Run 时部署错误的 APK 和崩溃等失败情况。

    为解决此问题,Android Studio 3.1.1 会将 Gradle-aware Make 任务添加到缺少此条目的项目的运行配置中。此项修改发生在首次 Gradle 同步之后的项目加载完毕时。

  • 在调试包含文本框的布局时,如果启用了高级分析,调试器会发生崩溃。
  • 点击 Build Variants 后,Android Studio 冻结。
  • AAR(Android 归档)文件被提取了两次,一次是在 Gradle 同步过程中,另一次是在 Gradle 编译过程中。
  • 从 SVG 文件导入的一些矢量可绘制资源中缺少元素。
  • 更新了有关弃用 compile 依赖项配置的警告,并优化了有关 implementationapi 配置的指导。要详细了解如何停止使用 compile 配置,请参阅新依赖项配置的文档

编码/IDE

IntelliJ 2017.3.3

核心 Android Studio IDE 已通过 2017.3.3 版本进行了更新,增加了 IntelliJ IDEA 中的相关改进。改进功能包括为集合与字符串提供了更好的控制流分析,改进了为 Null 性推理,添加了一些快速修复功能,等等。

如需了解详情,请参阅 IntelliJ IDEA 版本 2017.22017.3 的 JetBrains 版本说明,以及 错误修复更新的 JetBrains 版本说明。

通过 Room 改进了 SQL 修改

使用 Room 数据库库时,您可以利用针对 SQL 修改的多项改进:

  • Query 中的代码自动填充功能可以理解 SQL 表格(实体)、列、查询参数、别名、联接、子查询和 WITH 子句。
  • SQL 语法突出显示现在可以正常使用。
  • 您可以右键点击 SQL 中的报告名称并对其重命名,这也会重写相应的 Java 或 Kotlin 代码(例如,包括查询的返回类型)。重命名在另一个方向也适用,因此重命名 Java 类或字段会重写相应的 SQL 代码。
  • 使用 Find usages(右键点击并从上下文菜单中选择 Find usages)时,系统会显示 SQL 用法。
  • 要转到 SQL 实体在 Java 或 Kotlin 代码中的声明,您可以在按住 Control 键(Mac 上为 Command 键)的同时点击该实体。

要了解如何将 SQL 与 Room 搭配使用,请参阅使用 Room 在本地数据库中保存数据

数据绑定更新

此更新包括针对数据绑定的多项改进:

  • 现在,您可以将 LiveData 对象用作数据绑定表达式中的一个可观察字段。ViewDataBinding 类现在包含一个新的 setLifecycle() 方法,用于观察 LiveData 对象。

  • ObservableField 类现在可以接受其构造函数中的其他 Observable 对象。

  • 您可以预览数据绑定类的新增量编译器。要详细了解这个新编译器以及如何启用它,请参见数据绑定编译器 V2

    新编译器的好处包括:

    • Android Plugin for Gradle 会先于 Java 编译器生成 ViewBinding 类。

    • 编译应用时,库会保留其生成的绑定类,而不是每次都重新生成这些类。这可以大大提高多模块项目的性能。

编译器和 Gradle

D8 是默认的 DEX 编译器

D8 编译器现已默认用于生成 DEX 字节码。

这款新的 DEX 编译器可提供多项好处,包括:

  • Dex 速度更快
  • 降低内存使用量
  • 改进了代码生成功能(更好的注册表分配和更智能的字符串表格)
  • 在单步调试代码时提供更好的调试体验

除非您之前手动停用了 D8 编译器,否则无需对代码或开发工作流进行任何更改即可获得这些好处。如果您在 gradle.properties 中将 android.enableD8 设置为 false,请删除该标记或将其设为 true

android.enableD8=true
    

如需了解详情,请参阅新的 DEX 编译器

增量脱糖

对于使用 Java 8 语言功能的项目,系统会默认启用增量脱糖,这可以缩短编译时间。

脱糖可将语法糖转换为一种可供编译器更高效地处理的格式。

您可以通过在项目的 gradle.properties 文件中指定以下代码来停用增量脱糖:

android.enableIncrementalDesugaring=false
    

简化了输出窗口

Gradle Console 已被 Build 窗口取代,后者包含 SyncBuild 标签。

要详细了解如何使用经过简化的新 Build 窗口,请参阅监控编译流程

批量更新和并发索引

现在,Gradle 同步和 IDE 索引编制流程的效率更高,从而缩短了在许多冗余索引编制操作上浪费的时间。

C++ 和 LLDB

我们在 C++ 开发的编码、同步、编译和调试阶段做出了多项质量和性能方面的改进。具体改进包括:

  • 如果您处理大型 C++ 项目,则应该会注意到在编译符号上花费的时间明显减少。大型项目的同步时间也大大减少。

  • 通过更积极地重复使用缓存结果,改进了编译 CMake 并与之同步时的性能。

  • 为更多 C++ 数据结构添加格式转换工具(“pretty printers”)可使 LLDB 输出更易于阅读。

  • LLDB 现在仅适用于 Android 4.1(API 级别 16)及更高版本。

Kotlin

Kotlin 已升级到版本 1.2.30

Android Studio 3.1 包含 Kotlin 版本 1.2.30

现在使用命令行 Lint 检查分析 Kotlin 代码

从命令行运行 Lint 现在可分析您的 Kotlin 类。

对于您希望运行 Lint 的每个项目,Google 的 Maven 代码库必须包含在顶级 build.gradle 文件中。在 Android Studio 3.0 及更高版本中创建的项目已包含 Maven 代码库。

性能工具

使用 Energy Profiler 对原生 C++ 进程采样

CPU Profiler 现在包含一项默认配置,用于记录应用的原生线程的采样轨迹。您可以通过以下方法使用此配置:将应用部署到搭载 Android 8.0(API 级别 26)或更高版本的设备,然后从 CPU Profiler 的记录配置下拉菜单中选择 Sampled (Native)。然后,按照常规方法记录和检查轨迹

您可以通过创建记录配置来更改默认设置,例如采样间隔。

要切换回跟踪 Java 线程,请选择 Sampled (Java)Instrumented (Java) 配置。

过滤 CPU 轨迹、内存分配结果和堆转储

CPU ProfilerMemory Profiler 具有搜索功能,可让您通过记录方法轨迹、内存分配或堆转储来过滤结果。

要进行搜索,请点击窗格右上角的 Filter ,输入您的查询,然后按 Enter。

提示:您也通过按 Control + F(在 Mac 上按 Command + F)来打开搜索字段。

在 CPU Profiler 的 Flame Chart 标签中,包含与您的搜索查询相关的方法的调用堆栈会突出显示并移至图表的左侧。

要详细了解如何按方法、类或软件包名称过滤,请参阅记录和检查方法轨迹

Network Profiler 中的“Request”标签

Network Profiler 现在包含一个 Request 标签,其中提供了有关选定时间轴中的网络请求的详细信息。在以前的版本中,Network Profiler 仅提供有关网络响应的信息。

Network Profiler 中的线程视图

Network Profiler 中选择时间轴的一部分后,您可以选择以下某个标签,以查看有关该时间范围内的网络活动的更多详细信息:

  • Connection View:提供的信息与之前版本的 Android Studio 相同,它列出了在所选时间轴部分中从您应用的所有 CPU 线程发送或接收的文件。对于每个请求,您可以检查大小、类型、状态和传输时长。
  • Thread View:显示您应用的每个 CPU 线程的网络活动。此视图可让您检查应用的哪些线程负责每个网络请求。

Layout Inspector

Layout Inspector 获得了新功能,包括以前由 Hierarchy Viewer 和 Pixel Perfect 工具提供的部分功能:

  • 用于导航和检查布局的缩放按钮和键盘快捷键
  • 参考网格叠加层
  • 能够加载参考图片并将其用作叠加层(用于将您的布局与界面模型进行比较)
  • Render Subtree Preview,以隔离复杂布局中的视图

布局编辑器

布局编辑器中Palette 已经取得了许多改进:

  • 重新组织视图和布局的类别。
  • 为视图和布局新增的 Common 类别,您可以使用 Favorite 命令添加至该类别。
  • 改进了视图和布局搜索
  • 用于打开文档以显示特定视图或布局元素的新命令。

您可以在 Component Tree 或设计编辑器中使用新的 Convert View 命令将视图或布局转换为另一种类型的视图或布局。

您现在可以使用新的 Create a connection 按钮(位于 Attributes 窗口顶部的视图检查器中)为所选视图附近的项轻松创建约束条件。

Run 和 Instant Run

Select deployment target 对话框中 Use same selection for future launches 选项的行为现已更加一致。如果启用了 Use same selection 选项,则 Select deployment target 对话框仅在您首次使用 Run 命令时才会打开,直到所选设备不再保持连接为止。

以搭载 Android 8.0(API 级别 26)或更高版本的设备为目标时,Instant Run 可以将更改部署到资源,而不会导致应用重启。之所以能这么做,是因为这些资源包含在拆分 APK 中。

模拟器

要详细了解自 Android Studio 3.0 以来模拟器中的新变化和变更内容,请参阅版本 27.0.2版本 27.1.12 的 Android 模拟器版本说明。

主要改进包括:

  • 快速启动快照,用于保存模拟器状态并加快启动速度,并且能够使用 Save now 命令保存自定义启动状态。
  • 无窗口模拟器屏幕。
  • 适用于 Android 8.0(API 级别 26)、Android 8.1(API 级别 27)和 Android P 开发者预览版的系统映像。

界面和用户体验方面的改进

更多提示、键盘快捷键和有用的消息

我们在 Android Studio 中的许多位置添加了提示和有用的消息叠加层。

要查看很多命令的键盘快捷键,只需将鼠标指针悬停在某个按钮上,直到系统显示提示。

移除了 Tools > Android

Tools > Android 菜单已被移除。之前位于此菜单下的命令已移到别处。

  • 很多命令已直接移到 Tools 菜单下。
  • Sync project with gradle files 命令已移至 File 菜单。
  • Device Monitor 命令已被移除,如下所述。

可从命令行获得 Device Monitor

在 Android Studio 3.1 中,Device Monitor 发挥的作用不及以前。在许多情况下,Device Monitor 提供的功能现在由经过改进的新工具提供。

要了解如何从命令行调用 Device Monitor 以及 Device Monitor 提供的工具的详情,请参阅 Device Monitor 文档

3.0(2017 年 10 月)

Android Studio 3.0.0 是一个主要版本,包含各种新功能和改进。

macOS 用户:如果您要更新旧版 Android Studio,则可能会遇到内容为“Some conflicts were found in the installation area”的更新错误对话框。只需忽略此错误,然后点击 Cancel 继续安装。

3.0.1(2017 年 11 月)

这项 Android Studio 3.0 次要更新修正了一些常见错误并提升了性能。

Android Plugin for Gradle 3.0.0

新的 Android Plugin for Gradle 包含多种改进功能和新功能,但主要是改进了包含大量模块的项目的编译性能。在将新插件与这些大型项目结合使用时,您应当会注意到以下变化:

  • 由于延迟依赖项解析,编译配置时间更短。
  • 变体感知依赖项解析仅适用于您正在构建的项目和变体。
  • 对代码或资源应用简单更改时,可加快增量编译速度。

此版本还包含以下变更:

要详细了解变更内容,请参阅 Android Plugin for Gradle 版本说明

如果您已准备好升级到新插件,请参阅迁移到 Android Plugin for Gradle 3.0.0

Kotlin 支持

正如在 Google I/O 2017 大会上公布的一样,Android 现在已正式支持 Kotlin 编程语言。因此,在此版本中,Android Studio 包含针对 Android 开发的 Kotlin 语言支持。

您可以将 Kotlin 整合到您的项目中,具体方法是:将 Java 文件转换为 Kotlin(依次点击 Code > Convert Java File to Kotlin File),或使用 New Project 向导创建新的启用 Kotlin 的项目。

要开始操作,请阅读如何将 Kotlin 添加到您的项目中

Java 8 语言功能支持

您现在可以使用某些 Java 8 语言功能,并利用使用 Java 8 构建的库。不再需要 Jack,您需要先停用 Jack 才能使用内置到默认工具链中并得到改进的 Java 8 支持。

要更新您的项目以支持全新的 Java 8 语言工具链,请在 Project Structure 对话框(依次点击 File > Project Structure)中将 Source CompatibilityTarget Compatibility 更新到 1.8。要了解详情,请阅读如何使用 Java 8 语言功能

Android Profiler

新的 Android Profiler 取代了 Android Monitor 工具,并提供了一套新的工具来实时衡量应用的 CPU、内存和网络使用情况。您可以执行基于样本的方法跟踪来记录代码执行时间、采集堆转储数据、查看内存分配,以及检查网络传输文件的详细信息。

要打开,请依次点击 View > Tool Windows > Android Profiler(或点击工具栏中的 Android Profiler )。

窗口顶部的事件时间轴会显示轻触事件、按键和活动更改,以便您更清楚地了解时间轴中的其他性能事件。

从 Android Profiler 的概览时间轴中,点击 CPUMEMORYNETWORK 时间轴即可访问相应的分析器工具。

CPU Profiler

借助 CPU Profiler,您可以触发一个样本或检测的 CPU 轨迹,从而分析应用的 CPU 线程使用情况。然后,您可以使用各种数据视图和过滤器来排查 CPU 性能问题。

如需了解详情,请参阅 CPU Profiler 指南

Memory Profiler

Memory Profiler 可帮助您识别可能会导致应用卡顿、冻结甚至崩溃的内存泄漏和内存抖动。它会显示一个应用内存使用量的实时图表,让您可以捕获堆转储、强制执行垃圾回收以及跟踪内存分配。

如需了解详情,请参阅 Memory Profiler 指南

Network Profiler

通过 Network Profiler,您可以监控应用的网络活动,检查每个网络请求的负载,并链接回生成网络请求的代码。

如需了解详情,请参阅 Network Profiler 指南

APK 分析和调试

Android Studio 现在允许您分析和调试任何 APK,而无需从 Android Studio 项目构建它 - 只要该 APK 已编译用于启用调试并且您可以使用调试符号和源文件。

要开始操作,请在 Android Studio 欢迎屏幕上点击 Profile or debug APK。或者,如果您已经打开一个项目,请在菜单栏中依次点击 File > Profile or debug APK。这会显示已解压缩的 APK 文件,但不会对代码进行反编译。因此,为了正确添加断点和查看堆栈轨迹,您需要附加 Java 源文件和原生调试符号。

如需了解详情,请参阅分析和调试预编译的 APK

Device File Explorer

利用新的 Device File Explorer,您可以检查已连接设备的文件系统,并在设备和计算机之间传输文件。这取代了 DDMS 中提供的文件系统工具。

要打开,请依次点击 View > Tool Windows > Device File Explorer

如需了解详情,请参阅 Device File Explorer 指南

免安装应用支持

对 Android 免安装应用的全新支持允许您使用以下两种新模块类型在项目中创建免安装应用:免安装应用模块和功能模块(这些模块要求您安装 Instant Apps Development SDK)。

Android Studio 还包含一个新的模块化重构操作,可帮助您在现有项目中添加对免安装应用的支持。例如,如果您要重构项目以在免安装应用功能模块中添加一些类,请在 Project 窗口中选择这些类,然后依次点击 Refactor > Modularize。在随即显示的对话框中,选择这些类应归属的模块,然后点击 OK

当您准备好测试免安装应用时,您可以在运行配置启动选项中指定免安装应用的网址(具体方法是:依次选择 Run > Edit Configurations,选择您的免安装应用模块,然后在 Launch Options 下设置网址),以在连接的设备上编译和运行免安装应用模块

如需了解详情,请参阅 Android 免安装应用

Android Things 模块

New Project 和 New Module 向导中的新 Android Things 模板可帮助您开始为搭载 Android 系统的物联网设备开发应用。

如需了解详情,请参阅如何创建 Android Things 项目

自适应图标向导

Image Asset Studio 现在支持矢量可绘制对象,可让您创建用于 Android 8.0 的自适应启动器图标,同时为旧款设备创建传统图标(“旧版”图标)。

首先,右键点击项目中的 res 文件夹,然后依次点击 New > Image Asset。在 Asset Studio 窗口中,选择 Launcher Icons (Adaptive and Legacy) 作为图标类型。

如需了解详情,请参阅自适应图标

对字体资源的支持

为了支持 Android 8.0 中的新字体资源,Android Studio 添加了一个字体资源选择器,用于将字体打包到应用中或配置项目以将字体下载到设备上(如果可用)。布局编辑器还可以在您的布局中预览字体

要尝试下载字体,请确保您的设备或模拟器运行的是 Google Play 服务 11.2.63 版或更高版本。如需了解详情,请参阅可下载的字体

Firebase App Indexing Assistant

Firebase Assistant 已更新,其中包含讲述如何测试 App Indexing 的新教程。要打开 Assistant,请依次选择 Tools > Firebase。然后,依次选择 App Indexing > Test App Indexing

该教程包含用于测试公开和个人内容索引编制的新按钮:

  • 在第 2 步中,点击 Preview search results,验证您的网址是否会显示在 Google 搜索结果中。
  • 在第 3 步中,点击 Check for errors,验证应用中可编入索引的对象是否已添加到个人内容索引中。

App Links Assistant 已更新,包含以下新功能:

  • 为每个网址映射添加网址测试,以确保您的 intent 过滤器可处理真实的网址。

    您也可以使用下述 <tools:validation> 标记手动定义这些网址测试。

  • 使用正确的对象条目创建 Digital Asset Links 文件,以支持 Google Smart Lock,并向清单文件添加相应的 asset_statements <meta-data> 标记。

网址 intent-filter 验证程序

Android Studio 现在支持清单文件中的一种特殊标记,该标记可让您测试 intent 过滤器网址。这些标记与 App Links Assistant 可为您创建的标记相同。

要声明 intent 过滤器的测试网址,请添加 <tools:validation> 元素以及对应的 <intent-filter> 元素。例如:

<activity ...>
        <intent-filter>
            ...
        </intent-filter>
        <tools:validation testUrl="https://www.example.com/recipe/1138" />
    </activity>
    

此外,还请务必在 <manifest> 代码中添加 xmlns:tools="http://schemas.android.com/tools"

如果其中任何一个测试网址未通过 intent 过滤器定义,则会显示 Lint 错误。此类错误仍允许您编译调试变体,但它会破坏您的发布版本。

布局编辑器

布局编辑器经过了更新,包含多项增强功能,其中包括:

  • 新的工具栏布局和图标。
  • 更新了组件树中的布局。
  • 改进了拖放视图插入。
  • 新增了错误面板(在编辑器下方),其中会显示所有问题以及修正建议(如果可用)。
  • 针对使用 ConstraintLayout 进行编译的各种界面增强功能,包括:
    • 新增对创造屏障的支持。
    • 新增对创建组的支持:在工具栏中,依次选择 Guidelines > Add Group(需要 ConstraintLayout 1.1.0 测试版 2 或更高版本)
    • 新增用于创建链的界面:选择多个视图,然后右键点击并选择 Chain

Layout Inspector

Layout Inspector 包含一些增强功能,可让您更轻松地调试应用布局问题,包括将属性归入常见类别以及 View TreeProperties 窗格中的新搜索功能。

APK 分析器

您现在可以使用 apkanalyzer 工具从命令行使用 APK 分析器。

APK 分析器也经过更新,包含以下改进功能:

  • 对于使用 ProGuard 编译的 APK,您可以加载为 DEX 查看器添加功能的 ProGuard 映射文件,包括:
    • 粗体节点,指示在压缩代码时不应移除节点。
    • 一个用于显示在压缩过程中移除的节点的按钮。
    • 一个按钮,用于恢复树视图中由 ProGuard 进行模糊处理的节点的原始名称。
  • DEX 查看器现在会显示每个软件包、类和方法的估计大小影响。
  • 在顶部新增了一些过滤选项,可显示和隐藏字段和方法。
  • 在树视图中,未在 DEX 文件中定义的参考节点会以斜体显示。

如需了解详情,请参阅使用 APK 分析器分析您的编译

D8 DEX 编译器的预览版

Android Studio 3.0 包含一个名为 D8 的可选新 DEX 编译器。它最终将取代 DX 编译器,但您现在可以选择使用新的 D8 编译器。

DEX 编译会直接影响应用的编译时间、.dex 文件的大小和运行时性能。与当前 DX 编译器相比,新的 D8 编译器的编译速度更快,输出的 .dex 文件更小,同时却能保持相同乃至更出色的应用运行时性能。

要试用此预览版,您可以在项目的 gradle.properties 文件中进行以下设置:

android.enableD8=true
    

如需了解详情,请参阅有关 D8 编译器的博文

Google 的 Maven 代码库

Android Studio 现在默认使用 Google 的 Maven 代码库,而不依赖于 Android SDK 管理器来获取 Android 支持库、Google Play 服务、Firebase 和其他依赖项的更新。这样,您可以更轻松地使您的库保持最新,尤其是在使用持续集成 (CI) 系统时。

现在,所有新项目都默认包含 Google Maven 代码库。要更新现有项目,请在顶级 build.gradle 文件的 repositories 代码块中添加 google()

allprojects {
        repositories {
            google()
        }
    }
    

要详细了解 Google 的 Maven 代码库,请点击此处

其他变更

  • 使用 Android Studio 进行原生调试不再支持 32 位 Windows 系统。我们选择专注于其他平台,因为很少有开发者使用这个平台。如果您使用的是 32 位 Windows 系统并且打算调试本机代码,则应继续使用 Android Studio 2.3
  • 将基本 IDE 升级为 IntelliJ 2017.1.2,其包含 2016.32017.1 中的许多新功能,例如 Java 8 语言重构、参数提示、语义突出显示、可拖拽的断点、即时获得搜索结果等等。
  • 添加了许多新的 Lint 检查。
  • 另请参阅最新的 Android 模拟器更新

2.3(2017 年 3 月)

Android Studio 2.3.0 主要是一个问题修复和稳定版本,但它还包含许多新功能。

2.3.3(2017 年 6 月)

这是一项次要更新,添加了对 Android O(API 级别 26)的支持。

2.3.2(2017 年 4 月)

这是一项 Android Studio 2.3 次要更新,其中包含以下变化:

  • 更新了 AVD Manager,以在系统映像中支持 Google Play。
  • 修复了使用 R14 及更高版本的 NDK 时的 NDK 编译问题。

另请参阅 Android 模拟器 26.0.3 的相应更新。

2.3.1(2017 年 4 月)

这是一项 Android Studio 2.3 更新,修复了某些实际 Android 设备无法正确使用 Instant Run 的问题(请参阅问题 #235879)。

  • Android Studio 现在可以将 PNG、BMP、JPG 和静态 GIF 文件转换为 WebP 格式。WebP 是一种图片文件格式,提供有损压缩(如 JPEG)以及透明度(如 PNG),不过与 JPEG 或 PNG 相比,这种格式可以提供更好的压缩效果。如需了解详情,请参阅在 Android Studio 中将图片转换为 WebP
  • 新的 App Links Assistant 以分步向导的方式简化了向应用添加 Android 应用链接的流程。Android 应用链接是指将用户直接转到 Android 应用内特定内容的 HTTP 网址。
  • 布局编辑器现在支持两个新的 ConstraintLayout 功能:
    • 根据宽高比定义视图大小。
    • 使用约束链创建打包、展开和加权线性组。
    如需了解详情,请参阅使用 ConstraintLayout 构建自适应界面
  • 布局编辑器现在还可让您创建喜爱的属性列表,因此您无需点击 View all attributes 即可访问最常使用的属性。
  • 使用“Vector Import”对话框 (File > New > Vector Asset) 添加材质图标时,您现在可以按类别或图标名称过滤可用图标列表。如需了解详情,请参阅添加材质图标
  • 新的和经过更新的注释。使用方法、类和软件包的新 @RestrictTo 注释,您可以限制 API。经过更新的 @VisibleForTesting 注释现在包含一个可选的 otherwise 参数,可让您指定在不需要公开某个方法以用于测试时,该方法的公开范围应该为何。Lint 使用 otherwise 选项来强制执行方法的既定公开范围。
  • 新的 Lint 基准支持允许您使用项目当前警告集的快照作为未来检查任务的基准,因此仅会报告新问题。通过基准快照,您可以开始使用 Lint 使编译失败以显示新问题,从而无需返回并首先解决所有现有问题。
  • 新的 Lint 检查,包括:
    • 已过时的 SDK_INT 检查:Android Studio 会移除用于检查 SDK 版本的过时代码。
    • Object Animator 验证:Lint 会分析您的代码以确保 ObjectAnimator 调用引用具有正确签名的有效方法,并检查这些方法是否与 @Keep 关联以防止 ProGuard 在发布版本在重命名和移除它们。
    • 不必要的项目装饰器副本:旧版本的 RecyclerView 库不包含分隔线装饰器类,但在支持演示中提供了该类的一个示例。该库的最新版本具有分隔线装饰器类。Lint 会查找旧示例,并建议将其替换为新示例。
    • WifiManager 泄漏:在 Android 7.0(API 级别 24)之前,如果上下文不是应用,则使用 Context.getSystemService() 初始化 WifiManager 会导致内存泄漏。Lint 会查找这些初始化,如果它无法确定上下文是否为应用,则会建议您使用 Context.getApplicationContext() 来获取初始化的正确上下文。
    • 改进了资源前缀:现有的 resourcePrefix Lint 检查有许多限制。现在,您可以使用前缀配置项目(比如 android { resourcePrefix 'my_lib' }),Lint 可确保您的所有资源都使用此前缀。您可以为样式和主题背景使用名称变体形式。例如,对于 my_lib 前缀,您可以使用名为 MyLibThememyLibAttrmy_lib_layout 等的主题背景。
    • 切换到 WebP:此检查可根据项目的 minSdkVersion 设置识别可转换为 WebP 格式的图片。关联的快速修复可自动转换图片,您也可以手动将图片转换为 WebP
    • 不安全的 WebP:如果您的项目已包含 WebP 图片,则此检查会分析您的项目,以确保您的 minSdkVersion 设置足以支持所包含的图片。要详细了解 Android 和 Android Studio 中的 WebP 支持,请参阅哪些浏览器对 WebP 提供原生支持?使用 Android Studio 创建 WebP 图片

变更

  • 一个使用 Instant Run 推送更改的单独按钮:现在,部署应用后,点击 Apply Changes 即可使用 Instant Run 快速将增量更改推送到正在运行的应用。当您想可靠地推送更改并强制重启应用时,随时都可以使用 Run Debug 按钮。
    • 仅在将应用部署到搭载 Android 5.0(API 级别 21)或更高版本的目标设备时,才支持 Instant Run。
    • 对于使用 CMake 或 ndk-build 链接到外部原生项目的项目,不再停用 Instant Run。但是,您只能使用 Instant Run 将增量更改推送到 Java 代码,而非本机代码。
    • 冷交换(只需点击 Run 即可对正在运行的应用强制执行冷交换)现在更加可靠。强制执行冷交换还可以解决通知和微件界面更改未在目标设备上更新的问题。
    • 为加快应用启动速度进行了优化。这些优化可能会影响分析,因此,在分析应用时应该暂时停用 Instant Run
  • AVD Manager SDK Manager 按钮现在包含在精简导航栏以及完整的工具栏中。要使用精简导航栏,请点击 View 打开“View”菜单,然后确保已选中 Navigation Bar 而未选中 Toolbar

  • “Hybrid”调试器已更名为“Dual”调试器。
  • 在左侧窗格“Defaults”下方的 Run/Debug Configurations 对话框中,以下运行配置名称已更改,但行为没有发生任何变化:
    • JUnit 名称已更改为 Android JUnit。如果您有一个使用 JUnit 运行配置的项目,那么在您首次使用 Android Studio 打开项目时,这些配置将转换为 Android JUnit 运行配置。系统会显示一个对话框,通知您名称更改。
    • Android Tests 名称已更改为 Android Instrumentation Tests。
  • 从 2.3 版开始,GPU 调试器已从 Android Studio 中移除。GitHub 现在提供了该工具的开源独立版本。
  • 右键点击 *.gradle build 脚本后,无法再使用“Run/Debug”选项。
  • 现在,所有模板都使用 ConstraintLayout 作为默认布局。
  • 布局编辑器中的“Widgets”调色板已经过重新设计。

此版本还修复了很多问题。查看 2.3.0 中修复的所有问题。

已知问题:某些设备制造商会阻止应用在安装到设备上后自动启动。使用 Android Studio 2.3 将应用部署到实际设备时,此限制会破坏 Instant Run 的预期行为并导致以下错误输出:Error: Not found; no service started。要避免此问题,请使用模拟器或在设备的设置中为应用启用自动启动功能。每个设备的操作步骤有所不同,请查看制造商提供的说明。例如,某些受影响的华硕设备需要使用自动启动管理器将应用列入白名单。要详细了解此问题,请参阅问题 #235879

2.2(2016 年 9 月)

2.2.3(2016 年 12 月)

这是一项 Android Studio 2.2 次要更新,其中包含针对 Gradle、核心 IDE 和 Lint 的问题修复。

重要的编译更改:

  • ProGuard 版本回滚。由于 ProGuard 5.3.1 中发现的正确性问题,我们已回滚到 ProGuard 5.2.1。我们与 ProGuard 团队合作快速找到了解决方法,我们期望在 Android Studio 2.3 Canary 3 中向前回滚到 ProGuard 5.3.2。
  • 针对 aaptOptions IgnoreAssetsPattern 的问题修复无法正常运行(问题 224167
  • 针对为约束布局库自动下载 Gradle 的问题修复(问题 212128
  • 针对 JDK8/Kotlin 编译器 + dx 问题的问题修复(问题 227729

查看 2.2.3 中修复的所有问题

2.2.2(2016 年 10 月)

这是一项 Android Studio 2.2 次要更新,其中包含很多细微更改和问题修复,包括:

  • 通过 IDE 报告 Instant Run 问题时,报告现在还会包含 InstantRun 事件的 logcat 输出。为了帮助我们改进 Instant Run,请启用额外的日志记录功能并报告所有问题
  • 修复了 Gradle 的许多小问题。
  • 修复了生成多个 APK 时的问题。

2.2.1(2016 年 10 月)

这是一项 Android Studio 2.2 次要更新。其中包含多项问题修复,并添加了一项新功能来启用额外的日志记录功能,以帮助我们排查 Instant Run 问题。为了帮助我们改进 Instant Run,请启用额外的日志记录功能并报告所有问题

  • 所有新的布局编辑器都内置自定义工具,以支持 ConstraintLayout
  • 新的布局检查器,可让您在模拟器或设备上运行应用时检查布局层次结构的快照。
  • 新的 Assistant 窗口,可帮助您将 Firebase 服务集成到您的应用中。
  • 新的 APK 分析器工具,可让您检查打包应用的内容。
  • 新的 Espresso Test Recorder 工具(目前处于测试阶段),可帮助您记录自己的互动来创建界面测试。
  • 新的编译缓存(目前是实验性功能),可加快编译速度。
  • 新增 C/C++ 编译与 CMake 和 ndk-build 集成。将新的或现有的本机代码编译并内置到打包到 APK 中的库中,并使用 lldb 进行调试。对于新项目,Android Studio 默认使用 CMake,但也支持对现有项目使用 ndk-build。要了解如何在 Android 应用中添加本机代码,请阅读向项目中添加 C 和 C++ 代码。要了解如何使用 lldb 调试本机代码,请参阅调试本机代码
  • 新的示例浏览器,让您可以在 Android Studio 中轻松查找 Google Android 示例代码,以开始应用开发。
  • 新的合并的清单文件查看器,可帮助您诊断清单文件如何与项目编译变体中的应用依赖项合并。
  • Run 窗口现在包含当前运行的应用的日志消息。请注意,您可以配置 logcat 监视器显示,但无法配置 Run 窗口。
  • 新的 Android 模拟器功能:
    • 添加了新的 Virtual SensorsCellular > Signal Strength 控件。
    • Cellular > Network type 控件添加了 LTE 选项。
    • 添加了模拟纵向滑动功能,以便使用鼠标滚轮滚动浏览纵向菜单。
  • 新的运行/调试配置功能:
    • Android 应用和 Android Tests 模板的 Debugger 标签现在包含几个用于使用 LLDB 进行调试的新选项。
    • Android 应用和 Android Tests 模板的 Profiling 标签现在包含一个用于启用 GPU 跟踪的 Capture GPU Commands 选项。您可以在 GPU 调试器中显示 GPU 轨迹(测试版功能)。
    • Android Tests 模板现在包含一个适用于 Deployment TargetFirebase Test Lab Device Matrix 选项。
    • 原生应用模板已弃用。如果您在项目中使用此模板,Android Studio 会自动将其转换为 Android 应用模板。
    • Android 应用模板已更名为 Android 应用。
  • 改进了 GPU 调试器中的安装、配置、性能和界面功能(目前处于测试阶段)。
  • Android Studio 现在捆绑了 OpenJDK 8。现有项目仍使用 File > Project Structure > SDK Location 中指定的 JDK。要改为使用所捆绑的新 JDK,请依次点击 File > Project Structure > SDK Location,然后选中 Use embedded JDK 复选框。
  • 在界面中添加了新的帮助菜单和按钮,以便您更轻松地找到在线文档。

变更

  • 将 IDE 代码库从 IntelliJ 15 更新为 IntelliJ 2016.1
  • Instant Run 现在需要安装与目标设备 API 级别对应的平台 SDK。
  • 如果用户在工作资料下或以次要用户身份运行应用,系统会自动停用 Instant Run。
  • 修复了 Instant Run 的许多可靠性问题,这些问题会使更改无法部署或导致应用崩溃:
    • 某些应用资产未部署到正在运行的应用中。(错误:#213454
    • 当用户在 Instant Run 和非 Instant Run 会话(可序列化类未在其中定义 serialVersionUID)之间切换时,应用崩溃。(错误:#209006
    • Instant Run 不会反映样式更改。(错误:#210851
    • Instant Run 会话不可靠,会导致 FileNotFoundException。(错误:#213083
    • 在为 KitKat 执行完全重建之前,不会反映对可绘制对象的更改。(错误:#21530
    • 当自定义 sourceSets 包含嵌套路径时,Instant Run 不会反映资源更改。(错误:#219145
    • 如果已更改的类包含具有枚举值的注释,则热交换和冷交换不起作用。(错误:#209047
    • Instant Run 不会反映对注释数据的更改。(错误:#210089
    • 如果您在 IDE 外部进行更改,则 Instant Run 不会选择代码更改。(错误:#213205
    • 由于安全令牌不匹配,Instant Run 会话不可靠。(错误:#211989
    • 对于无法正确支持 run-as 的设备,冷交换会失败。(错误:#210875
    • 应用在 Instant Run 重启后崩溃。(错误:#219744
    • 从 Instant Run 切换到 Instant Debug 时观察到 ClassNotFoundException。(错误:#215805
  • 改进了 IDE 中 Gradle 同步的性能,尤其是对于大型项目。
  • 缩短了使用新的应用打包代码进行完整编译和增量编译的编译时间。
  • 改进了 Jack 编译器的性能和功能,包括对注释处理器和 dexing-in-process 的支持。要了解详情,请参阅 Android plugin for Gradle 2.2.0 版本说明
  • 添加了经过更新的 AccelerometerPlay 示例,以便您可以试用模拟器 Accelerometer 控件。依次选择 File > New > Import Sample 以导入项目。
  • 从 AVD 管理器中移除了 Scale AVD 属性。
  • Android 模拟器 -port-ports 命令行选项现可报告模拟器实例使用的端口和序列号,并在您提供的值出现问题时发出警告。
  • 改进了“Create New Class”对话框和相应的文件模板。注意:如果您之前自定义了 AnnotationTypeClassEnumInterfaceSingleton 文件模板,则需要修改您的模板以便与新模板一致,否则您将无法使用 Create New Class 对话框中的新字段。
  • 改进了 Vector Asset Studio 界面并添加了对 Adobe Photoshop Document (PSD) 文件的支持。
  • 改进了 Image Asset Studio 界面。
  • 改进了 Theme Editor 的资源选择器。
  • 修复了 Android Studio 中的内存泄漏和总体内存使用量减少的问题。
  • SDK 管理器中添加了 Background 按钮,以便您可以返回工作并在后台安装软件包。
  • 改进了无障碍功能,包括对屏幕阅读器和键盘导航的支持。
  • 代码分析得到增强,其中包含适用于 Java 8 语言的代码质量检查和更多的跨文件分析。
  • 几个工具栏图标发生了更改。

2.1(2016 年 4 月)

此更新中的主要更改可提供对使用 Android N 预览版进行开发的支持。

2.1.3(2016 年 8 月)

此项更新增加了与 Gradle 2.14.1 的兼容性,其中包括性能改进、新功能和重要的安全修复程序。如需了解详情,请参阅 Gradle 版本说明

默认情况下,Android Studio 2.1.3 中的新项目使用 Gradle 2.14.1。对于现有项目,IDE 会提示您升级到 Gradle 2.14.1 和 Android plugin for Gradle 2.1.3,这在使用 Gradle 2.14.1 或更高版本时是必需的。

2.1.2(2016 年 6 月)

此更新包含多项细微更改和问题修复:

  • Instant Run 更新和问题修复。
  • 改进了 LLDB 性能和崩溃通知。
  • 修复了 Android Studio 2.1.1 安全更新中会导致 git rebase 失败的回归问题。

2.1.1(2016 年 5 月)

安全版本更新。

Android N 平台增加了对 Java 8 语言功能的支持,这些功能需要一个名为 Jack 的新实验性编译器。最新版本的 Jack 目前仅在 Android Studio 2.1 中受支持。因此,如果您要使用 Java 8 语言功能,则需使用 Android Studio 2.1 开发应用。

注意:在您启用 Jack 编译器时,Instant Run 处于停用状态,因为这二者当前不兼容。

尽管 Android Studio 2.1 现已稳定运行,但 Jack 编译器仍处于试验阶段,您必须使用 build.gradle 文件中的 jackOptions 属性启用它。

除了为支持 N Preview 所做的更改外,Android Studio 2.1 还包含一些次要问题修复和以下增强功能:

  • 现在,当您使用 N 设备或模拟器并选择 Native 调试程序模式(在运行/调试配置对应的 Debugger 标签中),Java-aware C++ 调试程序默认处于启用状态。

对于其他编译增强功能(包括增量 Java 编译和 dexing-in-process),请将 Android plugin for Gradle 更新到版本 2.1.0。

2.0(2016 年 4 月)

注意:如果您要为 N 开发者预览版开发应用,则应使用 Android Studio 2.1 Preview。Android Studio 2.0 无法支持定位到 N 预览版所需的全部功能。要了解详情,请参阅如何为 N 预览版正确设置开发者环境

Instant Run

  • Android Studio 现在部署整洁编译的速度比以前更快。此外,将增量代码更改推送到模拟器或实际设备几乎是即时的。您可以查看更新,而无需重新部署新的调试版;在很多情况下,无需重启应用。
  • Instant Run 支持将以下更改推送到正在运行的应用:
    • 对现有实例方法或静态方法的实现所做的更改
    • 对现有应用资源的更改
    • 对结构代码的更改,例如方法签名或静态字段(需要搭载 API 级别 21 或更高版本的目标设备)。
  • 要详细了解 Instant Run,请阅读相关文档。

    注意:仅在您部署调试编译变体、使用 Android plugin for Gradle version 2.0.0 或更高版本,或针对 minSdkVersion 15 或更高版本配置应用的模块级 build.gradle 文件时,Instant Run 才受支持。为获得最佳性能,请针对 minSdkVersion 21 或更高版本配置应用。

Lint 新增的内容:

  • 使用 @IntDef 注释的整数检查 switch 语句,以确保处理所有常量。要快速添加所有缺少的语句,请使用意图操作下拉菜单,然后选择 Add Missing @IntDef Constants
  • 用于使用字符串插值在 build.gradle 文件中插入版本号的错误尝试的标记。
  • 用于扩展 Fragment 类的匿名类的标记。
  • 用于不安全位置(例如 res/asset/ 文件夹)中的本机代码的标记。此标记会建议将本机代码存储在 libs/ 文件夹中,然后在安装时将该代码安全打包到应用的 data/app-lib/ 文件夹中。AOSP:#169950
  • 用于对 Runtime.load()System.load() 调用的不安全调用的标记。AOSP:#179980
  • 通过从菜单栏中依次选择 Refactor > Remove Unused Resources 来查找和移除所有未使用的资源。未使用的资源检测现在支持仅由未使用的资源、原始文件中的引用(例如 .html 图片引用)以及 Gradle 资源压缩器使用的 tools:keeptools:discard 属性引用的资源,同时考虑非活动源集(例如其他编译类型中使用的资源)并正确处理静态字段导入。
  • 检查 minSdkVersion 的所有目标平台是否支持隐式 API 引用。
  • 标记 RecyclerViewParcelable 的不当使用。
  • 现在,系统还会针对 int 数组和 varargs 对 @IntDef@IntRange@Size 检查进行检查。

其他方面的改进

  • 针对 Android Emulator 2.0 进行了优化,它比以前速度更快,支持更广泛的虚拟设备,并具有经过显著改进的界面。要详细了解新模拟器,请阅读 SDK 工具版本说明
  • Android 虚拟设备管理器的改进:
    • 系统映像现已归入以下标签:“Recommended”、“x86”和“Other”。
    • 在高级设置下,您可以启用多核支持并指定模拟器可以使用的核心数量。
    • 在高级设置下,您可以通过选择以下选项之一来确定在模拟器上呈现图形的方式:
      • 硬件:使用计算机显卡更快地渲染。
      • 软件:使用基于软件的渲染。
      • 自动:让模拟器确定最佳选项。此选项为默认设置。
  • 通过在构建应用之前指定部署目标缩短了 AAPT 封装时间。这样,Android Studio 就可以仅封装指定设备所需的资源,从而提高了效率。
  • 增加了 Cloud Test Lab 集成,以提供按需应用测试以及云服务的便捷性和可扩展性。详细了解如何将 Cloud Test Lab 与 Android Studio 搭配使用
  • 添加了新 GPU 调试器的预览版。对于图形密集型应用,您现在可以可视化地单步调试 OpenGL ES 代码,以优化您的应用或游戏。
  • 添加了 Google App Indexing Test。为您的应用添加了对网址、应用索引和搜索功能的支持,以协助您提升应用流量,发现最常用的应用内容,以及吸引新用户。在 Android Studio 中测试并验证应用中的网址。请参阅 Android Studio 中的支持网址和 App Indexing
  • 从最新的 IntelliJ 15 版本升级,包括经过改进的代码分析和性能。有关新功能和增强功能的完整说明,请参阅 IntelliJ 的新变化
  • 现在,XML 编辑器自动填充功能可在填充属性时添加引号。要检查此选项是否已启用,请打开 SettingPreferences 对话框,依次转到 Editor > General > Smart Keys,然后选中 Add quotes for attribute value on attribute completion 旁边的复选框。问题:195113
  • XML 编辑器现在支持自动填充数据绑定表达式。

旧版本