Google 致力于为黑人社区推动种族平等。查看具体举措

Android Studio 预览版中的新功能

Android Studio 4.1 已发布稳定版。您可以在此处下载

Android Studio 4.2 目前已发布 Beta 版。

Android Studio Arctic Fox | 2020.3.1 目前已发布 Canary 版和开发者版。

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

如果您在使用 Android Studio 预览版时遇到任何问题,请与我们联系。您的错误报告有助于我们改进 Android Studio。

Android Studio Arctic Fox | 2020.3.1

更新了 Android Studio 的版本号

我们更改了 Android Studio 的版本编号系统,以更紧密地与 IntelliJ IDEA(Android Studio 在该 IDE 的基础上构建而成 )保持一致。

在以前的编号系统中,此版本应为 Android Studio 4.3 或 4.3.0.1。采用全新的编号系统后,现在版本为 Android Studio - Arctic Fox | 2020.3.1 Canary 1 或 2020.3.1.1。

Intellij 版本 旧名称 旧 - 编号系统 新 - 年份系统 新版本名称
2020.3 4.3 Canary 1 4.3.0.1 2020.3.1.1 Arctic Fox | 2020.3.1 Canary 1

今后,Android Studio 版本号的确定方式如下:

<Year of IntelliJ Version>.<IntelliJ major version>.<Studio major version>.<Studio minor/patch version>

  • 前两组数字表示特定 Android Studio 版本所基于的 IntellIj 平台版本。对于此版本,即为 2020.3。
  • 第三组数字表示 Studio 的主要版本,从 1 开始,每个主要版本递增 1。
  • 第四组数字表示 Studio 的次要版本/补丁程序版本,从 1 开始,每个次要版本递增 1。
  • 此外,我们还将为每个主要版本提供版本名称,分别以 A 到 Z 的动物来命名。此版本名为 Arctic Fox。

更新了 Android Gradle 插件的版本号

我们将更新 Android Gradle 插件 (AGP) 的版本号,以使其更接近底层 Gradle 构建工具。因此,AGP 7.0 将是继 AGP 4.2 之后的下一个版本。

如需了解详情,请参阅 AGP 版本说明中的版本编号变更

C++ 编辑器:在调试程序中设置执行点

在 C++ 代码编辑器窗口中,您可以在调试程序中运行您的应用时设置任意执行点。当您想要打破循环或通过分支代码强制使用其他路径时,此功能非常有用。

在 C/C++ 代码编辑器中设置执行点

如需使用此功能,请在代码中设置断点,并在调试程序中运行您的应用。当程序到达此断点时,将黄色箭头拖放到您接下来要执行的代码行中,这将绕过断点与新的执行点之间的所有指令。

请注意,更改执行点不会更改内存内容(堆栈或堆)或其他应用状态;例如,即使执行点发生变化,堆栈上的局部变量也会保留其值不变。

此功能适用于 arm64-v8aarmeabi-v7ax86_64 ABI,但不适用于 32 位 x86 ABI。

此功能基于 JetBrains CLion 编辑器中的底层功能。如需详细了解此功能及其限制,请参阅 JetBrains 发布的这篇博文

数据绑定中的 StateFlow 支持

对于使用协程的 Kotlin 应用,您现在可以使用 StateFlow 对象作为数据绑定来源,自动将数据变化通知给界面。数据绑定将具有生命周期感知能力,并且仅在屏幕上显示界面时才会触发。

如需将 StateFlow 对象与绑定类一起使用,需要指定生命周期所有者,以定义 StateFlow 对象的范围,并在布局中使用绑定表达式将 ViewModel 组件的属性和方法分配给相应的视图,如下面的示例所示:

class ViewModel() {
   val username: StateFlow<String>
}
<TextView
    android:id="@+id/name"
    android:text="@{viewmodel.username}" />

如果您当前正在使用运行 AndroidX 的 Kotlin 应用,StateFlow 支持将自动包含在数据绑定功能(包括协程依赖项)中。

如需了解详情,请参阅使用可观察的数据对象

全新 WorkManager Inspector

在之前的 Android Studio 版本中,我们推出了 Database Inspector,以帮助开发者了解和调试其应用的 SQLite 数据库。Database Inspector 是基于 App Inspection 框架构建的,后者在设计时即以支持不同类型的检查器为目标,可用于应用的不同方面。

在 Arctic Fox Canary 3 及更高版本中,您可以使用新的 WorkManager Inspector,它可以帮助您在使用 WorkManager 库 2.5.0-beta02 或更高版本时直观呈现、监控和调试应用的后台工作器。

您现在可以通过以下方式查找 WorkManager InspectorDatabase Inspector:从菜单栏中依次选择 View > Tool Windows > App Inspection。当您使用 WorkManager 2.5.0-beta02 或更高版本在搭载 API 级别 26 及更高级别的设备上部署应用时,您应该会在 WorkManager Inspector 标签页中看到活跃工作器,如下所示。

WorkManager Inspector

然后,您可以从表中选择一个工作器以查看更详细的信息,例如工作器说明、执行方式、工作器链的详细信息,以及工作器的执行结果。

WorkManager Inspector 详情

为帮助您调查执行失败的工作器出现的问题,您可以停止当前正在运行或已加入队列的工作器,方法是从表中选择该工作器,然后点击工具栏中的 Cancel Selected Worker 。您还可以使用 All tags 下拉菜单,根据您为工作器分配的标记来过滤表中的工作器。

如果要查看工作器链的直观呈现,请从表中选择一个工作器,然后点击工具栏中的 Show Graph View 。然后,选择链中的任意工作器以查看其详细信息,如果该工作器当前已加入队列或正在运行,请停止运行该工作器。如需返回表,请点击 Show List View

WorkManager Inspector 工作器链

Android Studio 现在使用 Gradle 测试运行程序

为提高测试执行的总体一致性,Android Studio 现在默认使用 Gradle 运行所有单元测试。在很多情况下,此更改不会影响 IDE 中的测试工作流。

例如,当您点击上下文菜单中的 Run 命令(在您右键点击测试类时可见)或对应的边线操作 时,Android Studio 将默认使用 Gradle 运行配置来运行单元测试。

用于运行测试的上下文菜单

但是,Android Studio 不再识别现有的 Android JUnit 运行配置,因此您应将可能另存为项目文件的 Android JUnit 运行配置迁移到 Gradle 运行配置。

如需创建 Gradle 测试配置,请按照创建新的运行/调试配置中的说明选择 Gradle 模板。创建新配置后,配置会显示在 Gradle 部分的 Edit Configurations 对话框中:

在 Android Studio 中编辑测试配置

如果您要检查不再识别的 Android JUnit 配置,可以执行以下两种操作之一:

  • 在文本编辑器中打开手动保存的配置。这些文件的位置由用户指定,但文件通常显示在 <my-app>/.idea/runConfigurations/ 中。
  • <my-app>/.idea/workspace.xml 中查找临时配置,并在 <component name="RunManager" ...> 节点下查找。例如:

    <component name="RunManager" selected="Gradle.PlantTest">
    …
    <configuration name="PlantTest" type="AndroidJUnit" factoryName="Android JUnit" nameIsGenerated="true">
          <module name="Sunflower.app" />
          <useClassPathOnly />
          <extension name="coverage">
            <pattern>
              <option name="PATTERN" value="com.google.samples.apps.sunflower.data.*" />
              <option name="ENABLED" value="true" />
            </pattern>
          </extension>
          <option name="PACKAGE_NAME" value="com.google.samples.apps.sunflower.data" />
          <option name="MAIN_CLASS_NAME" value="com.google.samples.apps.sunflower.data.PlantTest" />
          <option name="METHOD_NAME" value="" />
          <option name="TEST_OBJECT" value="class" />
          <option name="PARAMETERS" value="" />
          <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
          <method v="2">
            <option name="Android.Gradle.BeforeRunTask" enabled="true" />
          </method>
        </configuration>
    

Android Gradle 插件 7.0

移除了 Android Gradle 插件构建缓存

AGP 构建缓存已在 AGP 4.1 中移除。AGP 构建缓存之前是在 AGP 2.3 中引入的,对 Gradle 构建缓存起到了补充的作用;在 AGP 4.1 中,AGP 构建缓存已完全被 Gradle 构建缓存完全所取代。此更改不会影响到构建时间。

在 AGP 7.0 中,移除了 android.enableBuildCacheandroid.buildCacheDir 属性以及 cleanBuildCache 任务。

在项目中使用 Java 11 源代码

现在,您最高可以在应用的项目中编译 Java 11 版本的源代码,这让您可以使用更新的语言功能,例如专用接口方法、匿名类的 diamond 运算符以及 lambda 参数的局部变量语法。

如需启用此功能,请将 compileOptions 设置为所需的 Java 版本,并将 compileSdkVersion 设置为 30 或更高:

Kotlin

// build.gradle.kts

android {
    compileSdkVersion(30)

    compileOptions {
      sourceCompatibility(JavaVersion.VERSION_11)
      targetCompatibility(JavaVersion.VERSION_11)
    }

    kotlinOptions {
      jvmTarget = "11"
    }
}

Groovy

// build.gradle

android {
    compileSdkVersion 30

    compileOptions {
      sourceCompatibility JavaVersion.VERSION_11
      targetCompatibility JavaVersion.VERSION_11
    }

    // For Kotlin projects
    kotlinOptions {
      jvmTarget = "11"
    }
}

移除了依赖项配置

在 AGP 7.0 Canary 3 中,移除了以下配置(或依赖项范围):

  • compile
    根据用例,该配置已被 apiimplementation 替换。
    同样适用于 *Compile 变体,例如 debugCompile
  • provided
    该配置已被 compileOnly 替换。
    同样适用于 *Provided 变体,例如 releaseProvided
  • apk
    该配置已被 runtimeOnly 替换。
  • publish
    该配置已被 runtimeOnly 替换。

在大多数情况下,AGP 升级助理会自动将您的项目迁移到新配置。

针对 Android Gradle 插件进行编译时的类路径更改

如果要针对 Android Gradle 插件进行编译,编译类路径可能会更改。由于 Android Gradle 插件现在在内部使用 api/implementation 配置,因此某些工件可能会从您的编译类路径中移除。如果您在编译时依赖 Android Gradle 插件依赖项,请务必将其添加为显式依赖项。

用于布局编辑器的无障碍功能扫描仪

Android Studio 现与 Android 无障碍功能测试框架集成,可帮助您查找布局中的无障碍功能问题。使用布局编辑器时,点击 Accessibility Scanner “Accessibility Scanner”按钮 按钮以启动该扫描仪。此工具还会针对一些常见问题(例如缺少内容说明)提供修正建议。

无障碍功能扫描仪从 Canary 8 版本开始提供。

Android Studio 中的无障碍功能扫描仪

支持 Jetpack Compose

Jetpack Compose 工具包提供了一种用于构建应用界面的现代方法。 此外,该工具包还融合了 Kotlin 的所有优势,如帮助您编写可完全与 Java 互操作的简洁而惯用的代码。

为了获得最佳 Jetpack Compose 开发体验,建议您使用最新版本的 Android Studio 4.2。这是因为,当您搭配使用 Android Studio 和 Jetpack Compose 开发应用时,可以从智能编辑器功能中受益,这些功能包括“新建项目”模板和立即预览 Compose 界面等。

如需了解详情并开始使用,请转到 Jetpack Compose 概览

Arctic Fox 中的 Jetpack Compose 工具支持 | 2020.3.1

Android Studio 现在对使用 Jetpack Compose 的预览和测试应用提供额外的支持。

Compose 预览

@Preview 方法现在提供以下参数:

  • showBackground:开启和关闭预览的背景。
  • backgroundColor:设置仅在预览界面中使用的颜色。
  • uiMode:此新参数可采用任何 Configuration.UI_* 常量,且允许您更改预览的行为,例如,将其设置为夜间模式以了解主题如何反应。

互动式预览

在此模式下,您可以与界面组件互动、点击组件,以及查看状态如何变化。通过这种方式,您可以快速获得有关界面如何反应的反馈,并可快速预览动画。如要启用此模式,只需点击“互动”图标 ,系统即会切换预览模式。

如需停止此模式,请点击顶部工具栏中的 Stop Interactive Preview

部署到设备

使用此功能可将界面的代码段部署到设备。这有助于在设备中测试一小部分代码,而无需启动整个应用。

点击 @Preview 注释旁边或预览顶部的“部署到设备”图标 ,Android Studio 会将该 @Preview 部署到连接的设备或模拟器。

Preview Data Sources API

借助此新 Data Sources API,您可以根据数据生成预览。如果您有现有的数据列表或主题背景列表,通过该 API,您可以将其作为参数注入到 @Preview 方法。

class HelloWorldProvider :
   CollectionPreviewParameterProvider<String>(
       listOf("Hello World", "Привет мир", "Olá Mundo", "Hola Mundo"))

@Preview
@Composable
fun HelloWorldPreview(
   @PreviewParameter(HelloWorldProvider::class) text: String
) {
   MaterialTheme {
       Text(text = text)
   }
}

如需启用上述功能,模块的 build.gradle 必须包含以下设置:

  android {
  …
  buildFeatures {
    compose true
  }
  composeOptions {
     kotlinCompilerExtensionVersion = "0.1.0-dev13"
     kotlinCompilerVersion = "1.3.70-dev-withExperimentalGoogleExtensions-20200424"
   }
}

用于多设备测试的新测试矩阵

从 Android Studio Arctic Fox 开始,现在可以在多台设备上并行运行插桩测试,并且可以使用专门的插桩测试结果面板对插桩测试进行研究。利用此面板,您可以确定测试失败的原因在于 API 级别还是硬件属性。

插桩测试面板

为确保所有用户都获得良好的应用使用体验,最好的方法之一就是采用各种 API 级别和设备类型测试您的应用。

为了充分利用这项功能,请执行以下操作:

  1. 在目标设备下拉菜单(位于 IDE 的正上方)中选择 Select Multiple Devices

    目标设备下拉菜单

  2. 选择目标设备,然后点击 OK

    “Modify device set”对话框

  3. 运行测试。

如需在 Run 面板中查看测试结果,请依次转到 View > Tool Windows > Run

使用新的测试结果面板,您可以按状态、设备和 API 级别过滤测试结果。此外,您还可以点击各列的标题对列进行排序。通过点击单个测试,您可以单独查看每种设备的日志和设备信息。

Compose 预览的已知问题

Compose 预览目前不支持 androidx.ui.foundation.Dialog

Arctic Fox 预览版的已知问题

本部分将介绍 Android Studio Arctic Fox 预览版的当前已知问题。

更新补丁程序在 Canary 2 中无法正常使用

在 Linux 和 macOS 计算机上,更新补丁程序在 Canary 2 中无法正常使用。如需升级到 Canary 2 版本,请下载并安装完整版本。

Android Studio 4.2

本部分简要介绍了 Android Studio 4.2 预览版中的新功能和变更。

按变体配置应用签名

现在可以按变体在 Android Gradle 插件中启用或停用应用签名

下面的示例展示了如何在 Kotlin 或 Groovy 中使用 onVariants() 方法按变体设置应用签名:

androidComponents {
    onVariants(selector().withName("fooDebug"), {
        signingConfig.enableV1Signing.set(false)
        signingConfig.enableV2Signing.set(true)
    })

针对 JDK 11 优化 Gradle 构建

在 Android Studio 中运行时,Gradle 构建工具使用 Android Studio 中设置的默认 JDK 版本。在以前的版本中,默认情况下使用 JDK 8;但在 4.2 中,默认的 JDK 版本为 JDK 11。JDK 11 的这项更新会影响 JVM 垃圾回收器的默认配置,因为 JDK 8 使用并行垃圾回收器,而 JDK 11 使用 G1 垃圾回收器

为提高构建性能,我们建议您使用并行垃圾回收器测试 Gradle 构建。在 gradle.properties 中设置以下内容:

org.gradle.jvmargs=-XX:+UseParallelGC

如果此字段中已设置了其他选项,请添加一个新选项:

org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC

如需使用不同的配置衡量构建速度,请参阅对构建进行性能剖析

System Trace:改进了内存和图形的指标

在 CPU 性能剖析器中,System Trace 功能添加了用于分析应用性能的新指标。

“Events”表格

“Events”表格是 Analysis 窗格右侧的一个新标签页。此表格列出了当前选定的线程中的所有跟踪事件。

System Trace 的“Events”表格

新跟踪记录和跟踪记录组

System Trace 现提供更多数据,用于跟踪在搭载 Android 9 或更高版本的设备上部署的应用。

BufferQueue(在“Display”部分中)

这一新跟踪记录会显示应用 Surface BufferQueue 的缓冲区计数(0、1 或 2)。它可帮助您了解图像缓冲区在 Android 图形组件之间切换时的状态。例如,值 2 表示该应用当前处于三重缓冲状态,这可能会导致额外的输入延迟。

System Trace 的缓冲区队列

CPU 频率(在“CPU cores”部分中)

除了 CPU 调度数据外,我们还加入了按核心记录的 CPU 频率。该数据显示了每个核心的运行状况,让您可以了解哪些是现代移动处理器中的“大”核心或“小”核心

System Trace 的 CPU 频率

Process Memory (RSS)

新的 Process Memory (RSS) 显示了应用当前使用的物理内存量。

System Trace 的“Process Memory (RSS)”

Total

这是您的进程当前使用的物理内存总量。在基于 Unix 的系统上,这被称为“驻留集大小”,是匿名分配(由交换文件支持)、文件映射(向内存一次加载一页的文件)和共享内存分配(由多个进程访问,通过各种机制分配)所使用的所有内存的组合。

对于 Windows 开发者,驻留集大小类似于工作集大小。

Allocated

此计数器跟踪进程的正常内存分配目前占用了多少物理内存。这些分配均匿名(不由特定文件支持)且不公开(不共享)。

File Mappings

此计数器跟踪进程拥有的任何文件映射占用了多少物理内存。

Shared

此计数器跟踪在此进程和系统中其他进程之间共享的内存所用的物理内存量。

现在,R8 retrace 包含在命令行工具中

R8 retrace 现包含在 4.0 版命令行工具中。这是一个独立的工具,用于从经过混淆处理的堆栈轨迹获取原始堆栈轨迹。

您可以使用 SDK 管理器下载此软件包,这样会在 android_sdk/cmdline-tools 中安装 R8 retrace。或者,您也可以下载独立的命令行工具软件包

如需了解使用信息,请参阅用户指南中的 R8 retrace

布局检查器中新增了刷新操作

布局检查器是在 Android Studio 4.0 中引入的,旨在对正在运行的应用的界面堆栈进行实时检查。 不过,您可能并不总是希望布局检查器立即反映应用发生的情况,因为您可能希望在特定时间点检查应用布局的快照,或最大限度降低实时更新对应用性能的影响。

暂停实时更新并在布局检查器中刷新屏幕截图。

如需从应用手动加载界面数据快照,请先停用 Live updates 选项。然后,您可以点击 Refresh 按钮,以截取界面堆栈的新快照以进行检查。布局检查器现在会记住您的偏好设置,以便在会话之间保持启用或停用 Live updates

Jetpack Compose 的 Android Gradle 插件支持

从 Android Gradle 插件 4.2 Canary 13 开始,将仅支持 Jetpack Compose 编译器 1.0.0-alpha-04 及更高版本。

适用于 AGP 的升级助理

从 Android Studio 4.2 Canary 5 开始,适用于 Android Gradle 插件的升级助理可帮助您更新项目的 AGP 版本。

“Android Gradle plugin Upgrade Assistant”对话框

该工具以现有的 AGP 升级功能为基础构建,可指导您完成整个项目级更新/重构工作,并包含更新预览,有助于防止在执行 AGP 升级之前发生潜在的重大更改。

升级助理要执行的更改的预览

对 Safe Args 的支持

Safe Args 是一个 Gradle 插件,可生成简单的对象和构建器类,以实现类型安全的导航和访问任何关联参数。使用 Safe Args 时,Android Studio 4.2 Canary 9 及更高版本包含特殊支持,如下所述:

  • 支持针对 Directions、Args 和各种构建器类的自动填充功能
  • 支持 Java 和 Kotlin Safe Args 插件
  • 支持从源代码到 XML 的导航

Database Inspector

查询编辑器改进

Database Inspector 进行了一些改进,可帮助您编写和执行自定义 SQL 语句。当您打开检查器并打开一个 New query 标签页时,应该会看到一个更大、可调整大小的编辑器界面,用于编写查询和设置查询格式,如下所示。

Database Inspector 编辑器

此外,我们现在还提供您的先前查询的历史记录。点击 Show query history “Show query history”按钮 按钮时,您应该会看到先前针对当前所选数据库运行的查询列表。点击列表中的查询以在编辑器中查看完整查询的预览,然后按 Enter 将其复制到编辑器中。接着,点击 Run 以执行语句。

在查询编辑器中运行命令

离线模式

在旧版 Android Studio 中,在使用 Database Inspector 时断开与应用进程的连接会导致关闭检查器及其数据。在 Android Studio 4.2 Canary 8 及更高版本中,我们添加了在进程断开连接后继续检查应用数据库的功能,从而更轻松地在系统崩溃后调试应用。

如果发生断开连接的情况,Database Inspector 会下载您的数据库,然后供您在离线模式下使用这些数据库。您可以在离线模式下打开表格并运行查询。

请注意,当您重新连接至实时应用进程时,Database Inspector 会返回到实时模式,并仅显示设备上的数据。也就是说,重新连接到应用进程后,系统不会保留离线模式下显示的数据。因此,Database Inspector 不允许在离线模式下编辑或运行修改语句。

用于功能模块的新 removable 设置

Android Gradle 插件 4.2 使用 bundletool 1.0.0,后者为使用功能模块的应用引入了一项行为变更:指定为 dist:install-time 但未明确标记为 dist:removable 的任何功能模块都将默认为不可移动。这项新设置优化了安装时间模块与基本模块的融合,这可能会提高某些应用的性能。

如需详细了解这项新设置,请参阅功能模块清单文档中有关 dist:removable 标记的文档。

Android Gradle 插件 4.2

新增的 Gradle 属性:android.native.buildOutput

为了减少构建输出中的杂乱现象,AGP 4.2 会过滤来自使用 CMakendk-build 的原生 build 的消息,从而在默认情况下仅显示 C/C++ 编译器输出。以前,系统会为构建的每个文件生成一行输出,导致生成大量信息性消息。

如果您想查看完整的原生输出,请将新的 Gradle 属性 android.native.buildOutput 设置为 verbose

您可以在 gradle.properties 文件中或通过命令行设置此属性。

gradle.properties
android.native.buildOutput=verbose

命令行
-Pandroid.native.buildOutput=verbose

此属性的默认值为 quiet

gradle.properties 文件的行为变更

从 AGP 4.2 开始,无法再从子项目中替换 Gradle 属性。也就是说,如果您在子项目(而不是根项目)上的 gradle.properties 文件中声明某个属性,该属性将被忽略。

例如,在以前的版本中,AGP 会从 projectDir/gradle.propertiesprojectDir/app/gradle.propertiesprojectDir/library/gradle.properties 等文件中读取值。对于应用模块,如果同一 Gradle 属性同时存在于 projectDir/gradle.propertiesprojectDir/app/gradle.properties 中,projectDir/app/gradle.properties 中的值优先。

在 AGP 4.2 中已更改此行为,AGP 不会从子项目内的 gradle.properties 中加载值(例如,子项目为projectDir/app/gradle.properties)。此更改反映了新的 Gradle 行为并支持配置缓存

如需详细了解如何在 gradle.properties 文件中设置值,请参阅 Gradle 文档

默认情况下使用 Java 语言版本 8

从 4.2 版本开始,AGP 将默认使用 Java 8 语言级别。Java 8 提供对一些更新语言功能(包括 lambda 表达式、方法引用和静态接口方法)的访问权限。如需查看受支持功能的完整列表,请参阅 Java 8 文档

如需保留旧行为,请在模块级 build.gradle.ktsbuild.gradle 文件中显式指定 Java 7:

Kotlin

// build.gradle.kts

android {
  ...
  compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

Groovy

// build.gradle

android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

新增的 JVM 资源编译器

Android Gradle 插件 4.2 工具中新增了 JVM 资源编译器,它取代了 AAPT2 资源编译器的部分功能,可能会提升构建性能,尤其是在 Windows 计算机上。

从 Canary 7 版本开始,新增的 JVM 资源编译器默认处于启用状态。

现在支持 v3 和 v4 签名

Android Gradle 插件 4.2 现在支持 APK v3APK v4 签名格式。如需在 build 中启用这两种格式之一或同时启用这两种格式,请将以下属性添加到模块级 build.gradlebuild.gradle.kts 文件中:

Kotlin

// build.gradle.kts

android {
   ...
   signingConfigs {
      config {
          ...
          enableV3Signing(true)
          enableV4Signing(true)
      }
   }
}

Groovy

// build.gradle

android {
  ...
  signingConfigs {
    config {
        ...
        enableV3Signing true
        enableV4Signing true
    }
  }
}

通过 APK v4 签名,您可以使用 Android 11 中的 ADB 增量 APK 安装快速部署大型 APK。此新标志负责部署过程中的 APK 签名步骤。

部署到多个设备

为了帮助简化跨设备和 API 级别的应用测试,您现在可以执行以下步骤,将应用同时部署到多个设备或模拟器:

  1. 在目标设备下拉菜单(位于 IDE 的正上方)中选择 Select Multiple Devices

    目标设备下拉菜单

  2. 选择目标设备,然后点击 OK

    “Modify device set”对话框

  3. 运行您的应用或测试。

Apply Changes

为了帮助您更高效地迭代应用,我们针对搭载 Android 11 或更高版本的设备对 Apply Changes 进行了以下增强:

支持其他代码更改

对于搭载 Android 11 或更高版本的设备,您现在可以添加静态最终基元字段,然后通过点击以下任一按钮将这些更改部署到正在运行的应用中:Apply Code Changes Apply Changes and Restart Activity

在 Android 11 设备上,您现在还可以添加资源,然后通过点击 Apply Changes and Restart Activity 图标 ,将这些更改部署到正在运行的应用。

ANDROID_SDK_HOME 环境变量已弃用

ANDROID_SDK_HOME 环境变量已弃用,取而代之的是 ANDROID_PREFS_ROOT。如需了解详情,请参阅模拟器环境变量

4.2 预览版的已知问题

本部分将介绍 Android Studio 4.2 预览版的当前已知问题。

Kotlin 项目中的 Lint 异常

设置了 checkDependencies=true 的 Kotlin 项目可能会遇到 null 指针异常或以下错误:

Lint error: package fragment is not found for module

有关可能的解决方法,请参阅 Kotlin 项目中的 Lint 异常

原生内存性能分析器:在应用启动时剖析原生内存的性能这项功能已停用

在应用启动时剖析原生内存的功能已停用。此选项会在即将发布的版本中启用。

解决方法是,您可以使用 Perfetto 独立命令行性能剖析器来捕获启动配置文件。

安装 Canary 8 版本后,Studio 无法启动

将 Android Studio 升级到 4.2 Canary 8 后,如果用户在 .vmoptions 文件中设置了自定义虚拟机选项,Android Studio 可能不会启动。为了解决此问题,我们建议在 .vmoptions 中使用注释排除自定义选项(使用“#”字符)。.vmoptions 文件位于以下位置:

Windows

C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudioPreview4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudioPreview4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudioPreview4.2/studio64.vmoptions