要查看您的应用在设备上的外观和行为,您需要构建并运行它。Android Studio 设置新项目,以便您只需点击几下即可将应用部署到虚拟设备或物理设备。
此概述重点介绍如何使用 Android Studio 构建和运行应用以进行测试和调试。有关如何使用 Android Studio 构建应用以将其发布给用户的更多信息,请参阅 为用户构建发布版应用。有关使用或不使用 Android Studio 管理和自定义构建的更详细的信息,请参阅 配置构建。
基本构建和运行
要构建和运行您的应用,请按照以下步骤操作
- 在工具栏中,从运行配置菜单中选择您的应用。
在目标设备菜单中,选择要运行应用的设备。
如果您没有配置任何设备,则需要 创建一个 Android 虚拟设备 以使用 Android 模拟器,或者 连接物理设备。
点击运行 。
如果您尝试将项目启动到与之关联有错误或警告的设备,Android Studio 会发出警告。图标和样式更改区分了错误(导致配置错误的设备选择)和警告(可能会导致意外行为但仍可运行的设备选择)。
监视构建过程
要查看有关构建过程的详细信息,请选择查看 > 工具窗口 > 构建或点击工具窗口栏中的构建 。构建工具窗口显示 Gradle 为构建应用而执行的任务,如图 1 所示。
- 同步选项卡:显示 Gradle 为与您的项目文件同步而执行的任务。与构建输出选项卡类似,如果您遇到同步错误,请选择树中的元素以获取有关错误的更多信息。还显示 下载影响 的摘要,以确定依赖项下载是否对您的构建产生负面影响。
- 构建输出选项卡:以树的形式显示 Gradle 执行的任务,其中每个节点表示构建阶段或一组任务依赖项。如果您收到构建时或编译时错误,请检查树并选择一个元素以读取错误输出,如图 2 所示。
- 构建分析器选项卡:提供有关构建的构建性能分析信息。有关更多信息,请参阅 使用构建分析器排查构建性能问题。
- 重新启动:再次执行上次构建操作。如果您上次运行构建 > 生成选定模块,它将构建当前模块。如果您上次运行构建 > 生成项目,它将为项目中的所有模块生成中间构建文件。
- 过滤器:过滤掉成功完成的警告、任务或两者。这可以使查找输出中的问题变得更容易。
如果您的构建变体使用产品变种,Gradle 还会调用任务来构建这些产品变种。要查看所有可用构建任务的列表,请点击查看 > 工具窗口 > Gradle或点击工具窗口栏中的Gradle 。
如果在构建过程中发生错误,Gradle 可能会推荐命令行选项来帮助您解决问题,例如 --stacktrace
或 --debug
。要将命令行选项与您的构建过程一起使用
- 打开设置或首选项对话框
- 在 Windows 或 Linux 上,从菜单栏中选择文件 > 设置。
- 在 macOS 上,从菜单栏中选择Android Studio > 首选项。
- 导航到构建、执行、部署 > 编译器。
- 在命令行选项旁边的文本字段中,输入您的命令行选项。
- 点击确定以保存并退出。
下次尝试构建应用时,Gradle 将应用这些命令行选项。
高级构建和运行功能
在 Android Studio 中构建和运行应用的默认方法应该足以测试简单的应用。但是,您可以将这些构建和运行功能用于更高级的用例
要以调试模式部署应用,请点击调试 。在调试模式下运行应用可以让您在代码中设置断点、在运行时检查变量和评估表达式以及运行调试工具。要了解更多信息,请参阅 调试应用。
如果您有一个更大、更复杂的应用,请使用“应用更改”而不是点击运行 。这样可以节省时间,因为您无需在每次想要部署更改时都重新启动应用。有关“应用更改”的更多信息,请参阅 使用“应用更改”增量部署 部分。
如果您使用的是 Jetpack Compose,则“实时编辑”是一个实验性功能,它允许您实时更新可组合项,而无需重新点击运行 。这使您能够专注于编写 UI 代码,而不会被打断。有关更多信息,请参阅 实时编辑(实验性) 部分。
如果您有一个具有多个构建变体或版本的应用,则可以使用构建变体工具窗口选择要部署的构建变体。有关运行特定构建变体的更多信息,请参阅 更改构建变体 部分。
要微调应用安装、启动和测试选项,您可以更改运行/调试配置。有关创建自定义运行/调试配置的更多信息,请参阅 创建运行/调试配置 部分。
我们建议您将 Android Studio 用于您的开发需求,但您也可以从命令行将应用部署到虚拟或物理设备。有关更多信息,请参阅 从命令行构建应用。
使用“应用更改”增量部署
在 Android Studio 3.5 及更高版本中,“应用更改”允许您将代码和资源更改推送到正在运行的应用,而无需重新启动应用,并且在某些情况下,无需重新启动当前活动。这种灵活性有助于您控制在想要部署和测试小幅增量更改时重新启动应用的程度,同时保留设备的当前状态。
“应用更改”使用 Android JVMTI 实现中支持的功能,这些功能在运行 Android 8.0(API 级别 26)或更高版本的设备上受支持。要详细了解“应用更改”的工作原理,请参阅 Android Studio 项目 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 在无法应用更改时自动重新运行应用。要启用此行为,请按照以下步骤操作
打开设置或首选项对话框
- 在 Windows 或 Linux 上,从菜单中选择文件 > 设置。
- 在 macOS 上,从菜单中选择Android Studio > 首选项。
导航到构建、执行、部署 > 部署。
选中复选框以启用“应用更改”操作的自动运行回退。
点击确定。
平台相关的更改
“应用更改”的某些功能取决于特定版本的 Android 平台。要应用这些类型的更改,您的应用必须部署到运行该版本 Android(或更高版本)的设备。例如,添加方法需要 Android 11 或更高版本。
“应用更改”的限制
“应用更改”旨在加快应用部署过程。但是,在使用时存在一些限制。
需要应用重新启动的代码更改
某些代码和资源更改在应用重新启动之前无法应用,包括以下内容
- 添加或删除字段
- 删除方法
- 更改方法签名
- 更改方法或类的修饰符
- 更改类继承
- 更改枚举中的值
- 添加或删除资源
- 更改应用清单
- 更改原生库(SO 文件)
库和插件
某些库和插件会自动对应用的清单文件或清单中引用的资源进行更改。这些自动更新可能会以以下方式干扰“应用更改”
- 如果库或插件对应用的清单进行了更改,则无法使用“应用更改”。您必须重新启动应用才能看到更改。
- 如果库或插件对应用的资源文件进行了更改,则无法使用应用代码更改 。您必须使用应用更改并重新启动活动 (或重新启动应用)才能看到更改。
为避免这些限制,请禁用调试构建变体的所有自动更新。
例如,Firebase Crashlytics 在每次构建期间都会使用唯一的构建 ID 更新应用程序资源,这会阻止您使用应用代码更改 ,并要求您重新启动应用程序的活动才能查看更改。禁用此行为以在您的调试构建中将应用代码更改与 Crashlytics 结合使用。
直接引用已安装 APK 中内容的代码
如果您的代码直接引用了设备上安装的应用程序 APK 中的内容,则在点击应用代码更改 后,该代码可能会导致崩溃或行为异常。出现此行为是因为当您点击应用代码更改时,设备上的底层 APK 会在安装过程中被替换。在这些情况下,您可以点击应用更改并重新启动活动 或运行 而不是。
如果您在使用应用更改时遇到任何其他问题,请提交错误报告。
实时编辑
实时编辑是 Android Studio 中的一项实验性功能,允许您实时更新模拟器和物理设备上的可组合项。此功能最大限度地减少了编写和构建应用程序之间的上下文切换,让您能够更长时间地专注于编写代码而不会被打断。
更改构建变体
默认情况下,当您点击运行 时,Android Studio 会构建应用程序的调试版本,该版本仅供开发期间使用。
要更改 Android Studio 使用的构建变体,请执行以下操作之一
- 在菜单中选择构建 > 选择构建变体。
- 在菜单中选择查看 > 工具窗口 > 构建变体。
- 点击工具窗口栏上的构建变体选项卡。
对于没有原生/C++ 代码的项目,构建变体面板有两列:模块和活动构建变体。模块的活动构建变体值决定了 IDE 部署到连接设备的构建变体,并且在编辑器中可见。
要切换变体,请点击模块的活动构建变体单元格,然后从列表中选择所需的变体。
对于具有原生/C++ 代码的项目,构建变体面板有三列
- 模块
- 活动构建变体
- 活动 ABI
模块的活动构建变体值决定了 IDE 部署到设备的构建变体,并且在编辑器中可见。对于原生模块,活动 ABI值决定了编辑器使用的ABI,但不会影响部署的内容。
要更改构建变体或 ABI,请点击活动构建变体或活动 ABI列的单元格,然后从列表中选择所需的变体或 ABI。更改选择后,IDE 会自动同步您的项目。更改应用程序或库模块的任一列都会将更改应用于所有依赖行。
默认情况下,新项目会设置两个构建变体:调试变体和发布变体。您需要构建发布变体才能准备您的应用程序以供公开发布。要使用不同的功能或设备要求定义应用程序的其他变体,您可以定义其他构建变体。
Android Studio 构建变体对话框中的冲突
在 Android Studio 的构建变体对话框中,您可能会看到错误消息,指示构建变体之间存在冲突,例如以下内容
此错误并不表示 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 部署应用程序,以及要运行的模块、要部署的包、要启动的活动、目标设备、模拟器设置、Logcat 选项等。
默认的运行/调试配置会构建一个 APK,启动默认的项目活动,并使用选择部署目标对话框进行目标设备选择。如果默认设置不适合您的项目或模块,您可以自定义运行/调试配置或在项目、默认和模块级别创建新的运行/调试配置。
要编辑运行/调试配置,请选择运行 > 编辑配置。有关更多信息,请参阅创建和编辑运行/调试配置。