构建并运行您的应用

要在设备上查看您的应用的外观和行为,您需要构建并运行它。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,Live Edit 是一项实验性功能,允许您实时更新可组合项,而无需重新点击运行 。这使您可以专注于编写 UI 代码,最大限度地减少中断。有关更多信息,请参阅实时编辑(实验性)部分。

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

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

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

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

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

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

要求

“应用更改”操作仅在满足以下条件时可用

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

使用“应用更改”

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

应用更改并重启 Activity 应用更改并重启 Activity 图标:尝试通过重启 Activity(但不重启应用)来应用您的资源和代码更改。通常,当您修改了方法主体中的代码或修改了现有资源时,可以使用此选项。

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

应用代码更改 应用代码更改图标:尝试仅应用您的代码更改,而不重启任何内容。通常,当您修改了方法主体中的代码但未修改任何资源时,可以使用此选项。如果您同时修改了代码和资源,请使用应用更改并重启 Activity

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

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

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

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

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

  1. 打开设置偏好设置对话框

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

  3. 勾选复选框,为“应用更改”的任一或两个操作启用自动运行回退。

  4. 点击确定

平台相关更改

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

“应用更改”的局限性

“应用更改”旨在加快应用部署过程。但是,它在使用时存在一些限制。

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

某些代码和资源更改在应用重新启动之前无法应用,包括以下内容

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

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

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

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

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

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

如果您的代码直接引用了设备上已安装应用 APK 中的内容,那么在点击应用代码更改 应用代码更改图标 后,该代码可能会导致崩溃或行为异常。出现此行为的原因是,当您点击应用代码更改时,设备上底层 APK 会在安装期间被替换。在这种情况下,您可以改为点击应用更改并重启 Activity 应用更改并重启 Activity 图标运行 运行图标

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

实时编辑

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

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

更改构建变体

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

要更改 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 App Bundle 部署您的应用,以及要运行的模块、要部署的软件包、要启动的 Activity、目标设备、模拟器设置、Logcat 选项等等。

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

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