构建并运行您的应用

要查看您的应用在设备上的外观和行为,您需要构建并运行它。Android Studio 会设置新项目,以便您只需点击几下即可将应用部署到虚拟或物理设备。

本概述重点介绍如何使用 Android Studio 构建和运行您的应用,以进行测试和调试。有关如何使用 Android Studio 构建应用以将其发布给用户的更多信息,请参阅 为向用户发布构建您的应用。有关使用或不使用 Android Studio 管理和自定义构建的更多详细信息,请参阅 配置您的构建.

基本构建和运行

要构建并运行您的应用,请执行以下步骤

  1. 在工具栏中,从运行配置菜单中选择您的应用。
  2. 在目标设备菜单中,选择要运行应用的设备。

    Target device menu.

    如果您没有配置任何设备,则需要创建一个 Android 虚拟设备来使用Android 模拟器连接物理设备

  3. 点击运行

如果您尝试将项目启动到存在错误或警告的设备,Android Studio 会发出警告。图标和样式变化区分了错误(导致配置错误的设备选择)和警告(可能导致意外行为但仍可运行的设备选择)。

监控构建过程

要查看有关构建过程的详细信息,请选择查看 > 工具窗口 > 构建或单击工具窗口栏中的构建 构建工具窗口显示 Gradle 为构建您的应用而执行的任务,如图 1 所示。

图 1. Android Studio 中的构建工具窗口。
  1. 同步选项卡:显示 Gradle 执行的任务,以与您的项目文件同步。与构建输出选项卡类似,如果您遇到同步错误,请选择树中的元素以获取有关错误的更多信息。还显示了下载影响的摘要,以确定依赖项下载是否对您的构建产生负面影响。
  2. 构建输出选项卡:将 Gradle 执行的任务显示为树,其中每个节点代表构建阶段或一组任务依赖项。如果您收到构建时或编译时错误,请检查树并选择一个元素以阅读错误输出,如图 2 所示。
    图 2. 检查构建输出选项卡以查找错误消息。
  3. 构建分析器选项卡:提供有关您构建的构建性能分析信息。有关更多信息,请参阅使用构建分析器对构建性能进行故障排除
  4. 重新启动:再次执行上次构建操作。如果您上次运行构建 > 生成选定模块,它将构建当前模块。如果您上次运行构建 > 生成项目,它将为项目中的所有模块生成中间构建文件。
  5. 过滤器:过滤掉成功完成的警告、任务或两者。这可以使您更容易在输出中找到问题。

如果您的构建变体使用产品风味,Gradle 还会调用任务来构建这些产品风味。要查看所有可用构建任务的列表,请单击查看 > 工具窗口 > Gradle或单击工具窗口栏中的Gradle

如果在构建过程中发生错误,Gradle 可能会建议命令行选项来帮助您解决问题,例如--stacktrace--debug。要使用命令行选项进行构建过程

  1. 打开设置首选项对话框
    • 在 Windows 或 Linux 上,从菜单栏中选择文件 > 设置
    • 在 macOS 上,从菜单栏中选择Android Studio > 首选项
  2. 导航到构建、执行、部署 > 编译器
  3. 命令行选项旁边的文本字段中,输入您的命令行选项。
  4. 单击确定保存并退出。

下次您尝试构建应用时,Gradle 会应用这些命令行选项。

高级构建和运行功能

在 Android Studio 中构建和运行应用的默认方法应该足以测试简单的应用。但是,您可以使用这些构建和运行功能来处理更高级的使用案例

  • 要在调试模式下部署您的应用,请单击调试 。在调试模式下运行您的应用,您可以设置代码中的断点,在运行时检查变量和评估表达式,并运行调试工具。要了解更多信息,请参阅调试您的应用

  • 如果您有一个更大、更复杂的应用,请使用“应用更改”而不是单击运行 。这可以节省时间,因为您无需每次部署更改时都重新启动应用。有关“应用更改”的更多信息,请参阅使用“应用更改”增量部署部分。

  • 如果您使用 Jetpack Compose,实时编辑是一个实验性功能,它允许您实时更新可组合项,而无需再次单击运行 。这使您可以专注于编写 UI 代码,而无需过多打断。有关更多信息,请参阅实时编辑(实验性)部分。

  • 如果您有一个具有多个构建变体或版本的应用,您可以使用构建变体工具窗口选择要部署的构建变体。有关运行特定构建变体的更多信息,请参阅更改构建变体部分。

  • 要微调应用安装、启动和测试选项,您可以更改运行/调试配置。有关创建自定义运行/调试配置的更多信息,请参阅创建运行/调试配置部分。

  • 我们建议您使用 Android Studio 来满足您的开发需求,但您也可以从命令行将应用部署到虚拟或物理设备。有关更多信息,请参阅从命令行构建您的应用

使用“应用更改”增量部署

在 Android Studio 3.5 及更高版本中,“应用更改”允许您将代码和资源更改推送到正在运行的应用,而无需重新启动应用,在某些情况下,甚至无需重新启动当前活动。这种灵活性有助于您控制在想要部署和测试小的增量更改时要重新启动应用的多少,同时保留设备的当前状态。

“应用更改”使用Android JVMTI 实现中的功能,这些功能在运行 Android 8.0(API 级别 26)或更高版本的设备上受支持。要了解有关“应用更改”工作原理的更多信息,请参阅Android Studio Project Marble: 应用更改

要求

仅当您满足以下条件时,“应用更改”操作才可用

  • 您使用调试构建变体构建应用的 APK。
  • 您将应用部署到运行 Android 8.0(API 级别 26)或更高版本的目标设备或模拟器。

使用“应用更改”

当您想要将更改部署到兼容设备时,请使用以下选项

应用更改并重新启动活动 应用更改并重新启动活动图标: 尝试通过重新启动活动来应用资源和代码更改,但无需重新启动应用。通常,当您在方法体中修改代码或修改现有资源时,可以使用此选项。

您也可以通过按Control+Alt+F10(在 macOS 上为Control+Command+Shift+R)来执行此操作。

应用代码更改 应用代码更改图标: 尝试仅应用代码更改,而无需重新启动任何内容。通常,当您在方法体中修改代码但没有修改任何资源时,可以使用此选项。如果您修改了代码和资源,请改用应用更改并重新启动活动

您也可以通过按Control+F10(在 macOS 上为Control+Command+R)来执行此操作。

运行 : 部署所有更改并重新启动应用。当您所做的更改无法使用任何“应用更改”选项应用时,请使用此选项。要了解有关需要重新启动应用的更改类型的更多信息,请参阅“应用更改”的局限性部分。

为“应用更改”启用运行回退

当您单击应用更改并重新启动活动应用代码更改时,Android Studio 会构建一个新的 APK 并确定是否可以应用更改。如果更改无法应用并会导致“应用更改”失败,Android Studio 会提示您运行 运行图标您的应用,而不是失败。

如果您不想每次发生这种情况时都收到提示,您可以配置 Android Studio 在更改无法应用时自动重新运行您的应用。要启用此行为,请执行以下步骤

  1. 打开设置首选项对话框

    • 在 Windows 或 Linux 上,从菜单中选择文件 > 设置
    • 在 macOS 上,从菜单中选择Android Studio > 首选项
  2. 导航到构建、执行、部署 > 部署

  3. 选中复选框以启用对“应用更改”操作(一个或两个)的自动运行回退。

  4. 单击确定

平台相关的更改

“应用更改”的某些功能取决于 Android 平台的特定版本。要应用这些类型的更改,您的应用必须部署到运行该版本的 Android(或更高版本)的设备。例如,添加方法需要 Android 11 或更高版本。

“应用更改”的局限性

“应用更改”旨在加快应用部署过程。但是,在某些情况下,它无法使用。

需要重新启动应用的代码更改

某些代码和资源更改无法应用,直到应用重新启动,包括以下更改

  • 添加或删除字段
  • 删除方法
  • 更改方法签名
  • 更改方法或类的修饰符
  • 更改类继承
  • 更改枚举中的值
  • 添加或删除资源
  • 更改应用清单
  • 更改本机库(SO 文件)
库和插件

某些库和插件会自动对您的应用清单文件或清单中引用的资源进行更改。这些自动更新可能会以以下方式干扰“应用更改”

  • 如果库或插件对您的应用清单进行了更改,则您无法使用“应用更改”。您必须重新启动应用才能看到更改。
  • 如果库或插件对您的应用资源文件进行了更改,则您无法使用应用代码更改 应用代码更改图标。您必须使用应用更改并重新启动活动 应用更改并重新启动活动图标(或重新启动应用)才能看到更改。

要避免这些限制,请禁用调试构建变体的所有自动更新。

例如,Firebase Crashlytics会在每次构建期间使用唯一的构建 ID 更新应用资源,这会阻止您使用应用代码更改 应用代码更改图标,并要求您重新启动应用的活动才能看到更改。禁用此行为以在调试构建中将应用代码更改与 Crashlytics 一起使用。

直接引用已安装 APK 中内容的代码

如果您的代码直接引用了设备上安装的应用 APK 中的内容,则该代码在点击**应用代码更改**应用代码更改图标后可能会导致崩溃或运行异常。这是因为在您点击**应用代码更改**时,设备上的底层 APK 将在安装过程中被替换。在这些情况下,您可以点击**应用更改并重启活动**应用更改并重启活动图标或**运行**运行图标来代替。

如果您在使用应用更改时遇到任何其他问题,请提交错误报告

实时编辑

实时编辑是 Android Studio 中的一项实验性功能,它允许您实时更新模拟器和物理设备中的可组合项。此功能最大限度地减少了编写和构建应用程序之间的上下文切换,让您可以专注于更长时间地编写代码,而不会被打断。

了解有关实时编辑的更多信息

更改构建变体

默认情况下,Android Studio 会构建您的应用程序的调试版本,该版本仅供开发期间使用,当您点击**运行**UI 按钮时。

要更改 Android Studio 使用的构建变体,请执行以下操作之一

  • 在菜单中选择**构建**>**选择构建变体**。
  • 在菜单中选择**查看**>**工具窗口**>**构建变体**。
  • 点击工具窗口栏上的**构建变体**选项卡。

对于没有原生/C++ 代码的项目,**构建变体**面板有两个列:**模块**和**活动构建变体**。模块的**活动构建变体**值决定了 IDE 部署到已连接设备上的构建变体,并在编辑器中可见。

**图 9.** **构建变体**面板对于没有原生/C++ 代码的项目有两个列。

要切换变体,请点击模块的**活动构建变体**单元格,并从列表中选择所需的变体。

对于有原生/C++ 代码的项目,**构建变体**面板有三个列

  • 模块
  • 活动构建变体
  • 活动 ABI

模块的**活动构建变体**值决定了 IDE 部署到设备上的构建变体,并在编辑器中可见。对于原生模块,**活动 ABI** 值决定了编辑器使用的ABI,但不会影响部署的内容。

**图 10.** **构建变体**面板为有原生/C++ 代码的项目添加了**活动 ABI** 列。

要更改构建变体或 ABI,请点击**活动构建变体**或**活动 ABI** 列的单元格,并从列表中选择所需的变体或 ABI。更改选择后,IDE 会自动同步您的项目。更改应用程序或库模块的任一列都会将更改应用于所有依赖行。

默认情况下,新项目会设置两种构建变体:调试变体和发布变体。您需要构建发布变体才能准备您的应用程序以供公开发布。要定义具有不同功能或设备要求的应用程序的其他变体,您可以定义额外的构建变体

Android Studio 构建变体对话框中的冲突

在 Android Studio 的**构建变体**对话框中,您可能会看到错误消息,表明构建变体之间存在冲突,例如以下内容

Build Variant window displaying variant conflict errors

此错误并不表明 Gradle 存在构建问题。它表明 Android Studio IDE 无法解析选定模块的变体之间的符号。

例如,如果您有一个模块M1,它依赖于模块M2的变体v1,但M2在 IDE 中选择了变体v2,则您在 IDE 中有未解析的符号。假设M1依赖于一个仅在v1中可用的类;当选择v2时,IDE 不知道该类。因此,它无法解析类名并在M1模块的代码中显示错误。

这些错误消息出现是因为 IDE 无法同时加载多个变体的代码。但是,就您的应用程序的构建而言,在此对话框中选择的变体没有任何影响,因为 Gradle 会使用您 Gradle 构建配方中指定的源代码构建您的应用程序,而不是根据当前加载到 IDE 中的内容。

更改运行/调试配置

当您第一次运行应用程序时,Android Studio 会使用默认的运行配置。运行配置指定是将您的应用程序从 APK 或Android 应用程序包部署,以及要运行的模块、要部署的包、要启动的活动、目标设备、模拟器设置、Logcat 选项等等。

默认的运行/调试配置会构建一个 APK,启动默认的项目活动,并使用**选择部署目标**对话框来选择目标设备。如果默认设置不适合您的项目或模块,您可以在项目、默认值和模块级别自定义运行/调试配置或创建一个新的配置。

要编辑运行/调试配置,请选择**运行>编辑配置**。有关更多信息,请参阅创建和编辑运行/调试配置