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

Android Studio 预览版中的新功能

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

Android Studio 4.1 目前已发布 Canary 版和开发者版。

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

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

Android Studio 4.2

现在支持 v3 和 v4 签名

Android Gradle 插件 4.2 现在支持 v3 和 v4 APK 签名格式。如需在 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
    }
  }
}

v3 和 v4 签名具有以下优势:

  • APK v3 签名支持密钥轮替,可最大限度减少密钥丢失的影响。

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

支持 Jetpack Compose

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

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

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

4.2 中新增了 Jetpack Compose 工具支持

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"
   }
}

Compose 预览的已知问题

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

改进了插桩测试

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

插桩测试面板

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

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

  1. 在目标设备下拉菜单(位于 IDE 的正上方)中选择 Modify Device Set

    目标设备下拉菜单

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

    “Modify device set”对话框

  3. 从目标设备下拉菜单中选择 Multiple Devices,然后运行测试。

    从目标设备下拉菜单中选择“Multiple Devices”

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

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

Android Studio 4.1

本部分简要介绍了 Android Studio 4.1 中的新功能和变更。

System Trace 界面:更简单的选择功能、全新的分析标签页以及更多帧渲染数据

Android Studio 性能剖析器中的 System Trace 界面包含以下改进:

  • 边框选择:在 Threads 部分中,现在您可以拖动鼠标选出一个矩形区域,然后可以点击区域右上角的 Zoom to Selection 按钮(或使用键盘快捷键 M)放大选中区域。当您将相似的线程拖放到一起时,可以选择多个线程以同时检查所有这些线程。例如,您可能需要分析多个工作器线程。

  • “Summary”标签页Analysis 面板中新增的 Summary 标签页显示以下内容:

    • 特定事件所有发生实例的汇总统计信息,例如发生次数和最短/最长持续时间。
    • 所选发生实例的跟踪事件统计信息。
    • 有关线程状态分布的数据。
    • 所选跟踪事件中运行时间最长的发生实例。

    如需转到其他发生实例,请从表格中选择其他行。

  • 显示数据:在 Display 部分,新增的 SurfaceFlingerVSYNC 时间轴可以帮助您调查应用界面中的渲染问题。

如需了解有关如何记录系统跟踪数据的基本说明,请参阅使用 CPU 性能剖析器检查 CPU 活动记录跟踪数据部分。

现在可以使用独立性能剖析器

现在可以在独立于 Android Studio 主窗口的单独窗口中使用 Android Studio 性能剖析器。

如需运行独立性能剖析器,请执行以下操作:

  1. 确保 Android Studio 未在您的系统上运行。
  2. 转到安装目录,然后转到 bin 目录:

    Windows/Linux<studio-installation-folder>/bin

    macOS<studio-installation-folder>/Contents/bin

  3. 根据您的操作系统,运行 profiler.exeprofiler.sh。系统随即会显示 Android Studio 启动画面。

    启动画面消失后,系统会打开性能剖析器窗口:

  4. 启动 Android 模拟器或连接一个 Android 设备,然后等待主屏幕加载。如需从命令行运行模拟器,请参阅从命令行启动模拟器。 如果从 Android Studio 启动模拟器,请务必在模拟器启动后关闭 Android Studio。

    在独立性能剖析器的菜单中,点击 按钮,系统应该会显示所有连接的设备和模拟器:

    例如,在模拟器中打开 Google 地图。通过从下拉列表中选择一个模拟器创建新的性能剖析会话,然后选择 com.google.android.apps.maps (...)。这会启动一个性能剖析会话。

当您与地图互动时,性能剖析器中会显示触摸事件和 CPU 使用率。点击“CPU”、“Memory”、“Network”或“Energy”图可查看更多详情。

点击 按钮可结束性能剖析会话。

现在,您可以使用性能剖析器来检查应用的性能特性。如需了解详情,请参阅剖析应用性能

Material Design 组件:在新项目模板中更新了主题背景和样式

动画:在 Android Studio 中使用新的 Material Design 属性创建项目。

Create New Project 对话框中的 Android Studio 模板现在使用 Material Design 组件 (MDC),并默认遵循更新后的主题背景和样式指南。 更新包括:

  • MDC:项目依赖于 build.gradle. 中的 com.google.android.material:material。基本应用主题背景使用 Theme.MaterialComponents.* 父级并替换了更新后的 MDC 颜色和“on”属性。
  • 颜色资源colors.xml 中的颜色资源使用字面名称(例如,使用 purple_500 而不是 colorPrimary)。
  • 主题背景资源:主题背景资源位于 themes.xml(而非 styles.xml)中,使用 Theme.<ApplicationName> 名称。
  • 深色主题:基本应用主题背景使用 DayNight 父级,拆分为 res/valuesres/values-night
  • 主题背景属性:颜色资源在布局和样式中以主题背景属性(例如 ?attr/colorPrimary)的形式引用,以避免硬编码颜色。

Canary 9 中的 IDE 配置目录更改

在 Canary 9 版本中,用户配置目录的位置已更改为以下位置:

Windows

语法:%APPDATA%\Google\<product><version>

示例:C:\Users\YourUserName\AppData\Roaming\Google\AndroidStudioPreview4.1

macOS

语法:~/Library/Application Support/Google/<product><version>

示例:~/Library/Application Support/Google/AndroidStudioPreview4.1

Linux

语法:~/.config/Google/<product><version>

示例:~/.config/Google/AndroidStudioPreview4.1

这些新的目录位置与 IntelliJ IDEA 的最新更新一致(IntelliJ IDEA 是 Android Studio 所基于的 IDE)。

Dagger 导航支持

用于转到 Dagger 使用方和提供方的 IDE 边线操作

Android Studio 提供了新的边线操作,并扩展了 Find Usages 窗口中的支持,让您可以更轻松地浏览与 Dagger 相关的代码。

  • 新的边线操作:对于使用 Dagger 的项目,IDE 提供了边线操作,以帮助您浏览使用 Dagger 注释的代码。例如,点击使用给定类型的方法旁边的 边线操作会将您转到该类型的提供方。相反,点击 边线操作会将您转到类型被用作依赖项的位置。

  • “Find Usages”节点:现在,在给定类型的提供方上调用 Find Usages 时,Find 窗口会包含一个 Dependency consumer(s) 节点,列出该类型的使用方。相反,在由 Dagger 注入的依赖项的使用方上调用此操作时,Find 窗口会显示该依赖项的提供方。

直接在 Android Studio 中运行 Android 模拟器

现在,您可以直接在 Android Studio 中运行 Android 模拟器。使用此功能可节省屏幕空间、可利用热键在模拟器窗口和编辑器窗口之间快速导航,并可在一个应用窗口中集中管理 IDE 和模拟器工作流。

在 Android Studio 的工具窗口中启动的模拟器。

如需在 Android Studio 中运行模拟器,请确保您使用的 Android Studio 版本为 4.1,Android 模拟器版本为 30.0.10 或更高版本,然后按照以下步骤操作:

  1. 依次点击 File > Settings > Tools > Emulator(在 macOS 上,依次点击 Android Studio > Preferences > Tools > Emulator),然后选择 Launch in a tool window 并点击 OK
  2. 如果模拟器窗口未自动显示,请依次点击 View > Tool Windows > Emulator,将其打开。
  3. 使用 AVD 管理器启动您的虚拟设备,或在运行应用时通过设置目标虚拟设备启动它。

限制

目前,如果模拟器在工具窗口中运行,您就无法使用模拟器的扩展控件。如果您的开发工作流主要依赖于扩展控件,请继续将 Android 模拟器用作独立应用。此外,某些虚拟设备(例如 Android TV 和可折叠设备)无法在 Android Studio 中运行,因为它们有专门的界面要求或在扩展控件中有重要功能。

数据库检查器

借助 Android Studio 4.1 Canary 6 及更高版本,您可以使用新版数据库检查器检查、查询和修改应用的数据库。例如,您可以通过修改数据库中的值并在设备上测试更改来调试正在运行的应用。

修改表值并在正在运行的应用中查看更改

如需开始使用,请将您的应用部署到搭载 API 级别 26 或更高级别的设备中,然后从菜单栏中依次选择 View > Tool Windows > Database Inspector

如果 Database Inspector 窗口未自动选择您的应用的进程,请从下拉菜单中选择该进程。

检查并修改表

Databases 面板中,您可以查看应用的数据库,还可以展开数据库节点以查看其中的表。当您双击某个表时,检查器会在右侧的一个单独的标签页中打开该表(如以下屏幕截图中所示),您可以在其中检查表中的数据,按列排序数据,或在设备上运行应用的同时修改值。

如需更改表单元格中的值,只需双击相应单元格,更改单元格中的值,然后按 Enter 键即可。如果您使用 Room 持久性库并观察数据库(例如使用 LiveData),这些更改应该会立即显示在正在运行的应用中。否则,您可能需要刷新应用的数据库查询信息,才能看到更改。

检查、查询和修改应用的数据库

如果您的应用更新了数据库,并且您希望在检查器窗口中自动显示这些更新,请勾选 Live updates 旁边的复选框。请注意,启用此选项后,检查器中的表将变为只读状态,您无法修改表中的值。

或者,您也可以点击 Refresh Table,手动更新检查器中的数据。同样,如果数据库架构发生变化,请点击 Databases 面板中的 Refresh Schema 图标

查询数据库

如需查询数据库,请点击 Databases 面板中的“Open New Query”标签页图标 。这将在右侧打开一个 New Query 标签页。如果应用包含多个数据库,请使用标签页窗口中的下拉菜单选择要查询的数据库。在文本字段中,您可以指定 SQLite 查询,然后点击 Run。检查器会查询应用的数据库并返回结果,如下所示。

查询数据库

如果您使用 Room 持久性库,Android Studio 还会提供边线操作,帮助您快速运行在 @Query 注释中定义的查询。将应用部署到兼容设备上并在 IDE 中打开 Database Inspector 后,请点击 @Query 注释旁边的 按钮,如下所示。

Room 查询注释边线操作

数据库检查器会打开一个新标签页,运行查询并返回结果。 如果查询包含已命名的绑定参数(例如 :name),Android Studio 会在运行查询之前请求每个参数的值。

防止新数据库和现有数据库关闭

如果您的应用经常连接到数据库并断开连接,则很难检查这些数据库。这是因为检查、查询和修改数据库需要您的应用保持与相应数据库的实时连接。Database Inspector 窗口使用图标来帮助您确定处于打开状态 () 和关闭状态 () 的数据库。

如需更轻松地检查这些数据库,您可以通过点击 Keep database connections open 按钮 来防止与数据库的新连接和现有连接关闭。 启用此行为后,Keep database connections open 按钮会变为

原生代码崩溃报告的符号化解析

当原生代码中发生崩溃或 ANR 时,系统会生成堆栈轨迹,这是您的程序在崩溃之前调用过的嵌套函数序列的快照。这些快照可帮助您找出并修正源代码中的任何问题,但必须先对其进行符号化解析,以将机器地址转换回简单易懂的函数名称。

如果您的应用或游戏是使用原生代码(如 C++)开发的,那么您现在可以针对应用的每个版本向 Play 管理中心上传调试符号文件。Play 管理中心会使用这些调试符号文件对应用的堆栈轨迹进行符号化解析,以便您更轻松地分析崩溃和 ANR。

如何上传调试符号文件

如果要上传调试符号文件,您必须使用 Android Gradle 插件 4.1 或更高版本。

上传调试符号文件的方式取决于您是使用 Android App Bundle 还是 APK 构建应用:

  • 使用 Android App Bundle 构建的应用:如果您的项目构建的是 Android App Bundle,您可以自动在其中添加调试符号文件,这样您就不必手动上传文件了。如果要添加该文件,请将以下代码添加到应用的 build.gradle 文件中:

    android.defaultConfig.ndk.debugSymbolLevel = 'FULL'
    
  • 使用 APK 构建的应用:如果您的项目构建的是 APK,则调试符号文件是单独构建的。将以下代码添加到应用的 build.gradle 文件中:

    android.defaultConfig.ndk.debugSymbolLevel = 'FULL'
    

    在构建过程中,Android Gradle 插件会将调试符号文件输出到以下项目位置:

    app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip
    

    将此调试符号文件上传到 Play 管理中心。

Native Memory Profiler

Android Studio Memory Profiler 现在包含 Native Memory Profiler,该工具适用于部署到搭载 Android 10 或更高版本的物理设备的应用。Native Memory Profiler 的样本大小为 32 个字节,它会跟踪特定时间段内采用原生代码表示的对象的分配/解除分配情况,并提供以下信息:

  • Allocations:在选定时间段内通过 malloc()new 运算符分配的对象数。
  • Deallocations:在选定时间段内通过 free()delete 运算符解除分配的对象数。
  • Allocations Size:在选定时间段内所有分配的总大小(以字节为单位)。
  • Deallocations Size:在选定时间段内所有已释放内存的总大小(以字节为单位)。
  • Total CountAllocations 列中的值减去 Deallocations 列中的值所得的结果。
  • Remaining SizeAllocations Size 列中的值减去 Deallocations Size 列中的值所得的结果。

Native Memory Profiler

如需启动记录,请点击 Memory Profiler 窗口顶部的 Record native allocations

“Record native allocations”按钮

当您准备好完成录制时,请点击 Stop recording

设置 NDK 路径

您可以使用模块的 build.gradle 文件中的 android.ndkPath 属性设置本地 NDK 安装的路径。

android {
   ndkPath "your-custom-ndk-path"
}

如果您将此属性与 android.ndkVersion 属性配合使用,则该路径必须包含版本与 android.ndkVersion 相同的 NDK 目录。

使用 TensorFlow Lite 模型

借助机器学习模型绑定,您可以轻松地直接导入 .tflite 模型文件并在项目中使用这些模型文件。Android Studio 会生成易于使用的类,这样您就可以使用更少的代码运行模型并获得更佳的类型安全。

支持的模型

机器学习模型绑定的当前实现支持图像分类和风格迁移模型,前提是这些模型通过元数据得到了增强。随着时间的推移,支持范围将扩展到其他问题领域,例如对象检测、图像分割和文本分类。

TensorFlow Hub 上提供了丰富的包含元数据的预训练模型。您还可以自己向 TensorFlow Lite 模型添加元数据,如向 TensorFlow Lite 模型添加元数据中所述。

导入模型文件

如需导入支持的模型文件,请按以下步骤操作:

  1. 在“File”菜单中,依次选择 File > New > Other > TensorFlow Lite Model,打开 TensorFlow Lite 模型导入对话框。
  2. 选择您之前下载或创建的 .tflite 模型文件。
  3. 点击 Finish

这会将模型文件导入您的项目中,并将其放入 ml/ 文件夹中;如果该目录不存在,Android Studio 将为您创建该目录。

导入 TensorFlow Lite 模型

查看模型元数据和使用情况

如需查看所导入模型的详细信息并获取有关如何在应用中使用该模型的说明,请双击项目中的模型文件以打开模型查看器页面,该页面显示以下信息:

  • Model:模型的简要说明
  • Tensors:输入和输出张量的说明
  • Sample Code:有关如何在应用中与模型交互的示例

下面是一个使用 mobilenet_v1_0.25_160_quantized.tflite 的示例:

TensorFlow Lite 模型查看器的屏幕截图

如示例所示,Android Studio 创建了一个名为 MobilenetV1025160Quantized 的类,用于与模型进行交互。

如果模型不含元数据,此屏幕将仅提供基本信息。

已知问题与解决方法

  • 目前对除图像分类和风格迁移之外的其他问题领域的 TensorFlow Lite 模型的支持有限。虽然导入应该可以正常运行,但某些模型输入和/或输出由 TensorBuffer 而非合适的类型表示。对于不含任何元数据的模型,所有模型输入和输出都将由 TensorBuffer 表示。
  • 不支持输入和输出数据类型不为 DataType.UINT8DataType.FLOAT32 的模型。

此功能仍在开发中,欢迎您提供反馈或报告错误

调试 build 中的断言

现在,在部署应用的调试版本时,会启用 Java 代码中的断言。由于 Android 运行时不支持在运行时启用断言(即,将 -ea/-enableassertions 标记的等效内容传递到 Java 虚拟机),因此应用中的断言以前没有任何作用。

现在,当您使用 Android Gradle 插件 4.1.0-alpha01 及更高版本构建和部署应用的调试版本时,内置编译器 (D8) 会重写代码以在编译时启用断言,因此您始终可以使断言检查处于活动状态。

Apply Changes

为了帮助您提高迭代应用时的效率,我们针对搭载 Android 11 开发者预览版 3 或更高版本的设备推出了以下 Apply Changes 增强功能:

部署速度更快

我们投入了大量资源,开发了一种无需安装应用即可在设备上部署和保留更改的方法,以优化您的迭代速度。 现在,完成初始部署后,使用 Apply Code Changes 图标 Apply Changes and Restart Activity 图标 对 Android 11 设备进行后续部署的速度显著加快。

如需详细了解这两项操作之间的区别,请参阅 Apply Changes

支持其他代码更改

现在,对于搭载 Android 11 开发者预览版 3 或更高版本的设备,您可以添加各种方法和静态最终基元字段,然后点击 Apply Code Changes 图标 Apply Changes and Restart Activity 图标 将这些更改部署到正在运行的应用。

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

从 AAR 导出 C/C++ 依赖项

Android Gradle 插件 4.0 添加了在 AAR 依赖项中导入 [Prefab] 文件包的功能,如下文所述。从 Canary 10 开始,版本 4.1 支持从 Android 库项目的 AAR 中的外部原生 build 导出库。

如需导出原生库,请将以下代码添加到库项目的 build.gradle 文件的 android 代码块中:

buildFeatures {
    prefabPublishing true
}

prefab {
    mylibrary {
      headers "src/main/cpp/mylibrary/include"
    }

    myotherlibrary {
        headers "src/main/cpp/myotherlibrary/include"
    }
}

在此示例中,来自您的 ndk-build 或 CMake 外部原生 build 的 mylibrarymyotherlibrary 库会打包到您的 build 生成的 AAR 中,并分别将标头从指定目录导出到其依赖项。

CMake 使用的预编译依赖项

对于 Android Gradle 插件 4.0 及更高版本的用户,导入预编译原生库的配置设置已发生更改。如需了解详情,请参阅 AGP 版本说明

4.1 预览版的已知问题

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

补丁程序在 4.1 Canary 10 中无法正常使用

Android Studio 4.1 Canary 10 的补丁程序目前已损坏。如需更新到较新的 Android Studio 4.1 版本,请关闭 Android Studio,然后下载并安装最新软件包

此问题已在 Android Studio 4.1 Beta 1 中修复。

Canary 9 中缺少 Kotlin 插件的解决方法

在 Android Studio 4.1 Canary 9 中,升级后首次启动 Android Studio 时,您可能会看到以下错误:

missing essential plugin org.jetbrains.android

当您从旧版 Android Studio 导入设置时,可能会出现此错误。通常情况下,这意味着您在本地安装的 Kotlin 插件与新 IDE 不兼容。

如需解决此问题,请从以下位置移除 Kotlin 目录:

Linux~/.local/share/Google/AndroidStudioPreview4.1

WindowsC:\Users\YourUserName\AppData\Roaming\Google\AndroidStudioPreview4.1

MacOS~/Library/Application Support/Google/AndroidStudioPreview4.1

由于 JetBrains 目前没有提供与 Canary 9 兼容的 Kotlin 插件,因此我们已将自己的 Kotlin 插件捆绑到 Canary 9 更新中,您无需手动安装 Kotlin 插件。

CPU 性能剖析器中的超时错误

如果您选择采样 Java 方法跟踪 Java 方法配置,则可能会在 Android Studio CPU 性能剖析器中遇到“停止记录失败”错误。这些是常见的超时错误,尤其是当您在 idea.log 文件中看到以下错误消息时:

Wait for ART trace file timed out

超时错误对所跟踪方法的影响往往大于所采样方法,对较长时间记录的影响往往大于较短时间的记录。作为临时解决方法,尝试较短时间的记录以查看错误是否消失可能会很有帮助。

如果您在使用性能剖析器时遇到超时问题,请提交错误,其中包含设备品牌/型号以及来自 idea.log 和 logcat 的所有相关条目。

IDE 中的 Git 版本控制错误

Git 版本控制中需要进行身份验证的操作在 Android Studio 4.1 Canary 1 的 IDE 中损坏。

如需解决此问题,请升级到 Android Studio 4.1 Canary 2。