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

构建和运行您的应用

您只需点击几下,即可让 Android Studio 设置好要部署至 Android 模拟器或已连接设备的新项目。安装应用后,您可以使用 Apply Changes 部署特定代码和资源更改,而无需构建新的 APK。

如需构建和运行您的应用,请按以下步骤操作:

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

    目标设备下拉菜单。

    如果您未配置任何设备,则需要通过 USB 连接设备创建 AVD 以使用 Android 模拟器

  3. 点击 Run

更改运行/调试配置

当您首次运行应用时,Android Studio 使用默认运行配置。运行配置用于指定要通过 APK 还是 Android App Bundle 部署您的应用、要运行的模块、要部署的软件包、要启动的 Activity、目标设备、模拟器设置、logcat 选项,等等。

默认运行/调试配置会构建 APK,启动默认项目 Activity,并使用 Select Deployment Target 对话框选择目标设备。如果默认设置不适合您的项目或模块,您可以自定义运行/调试配置,也可以在项目、默认和模块级别创建新配置。如要修改运行/调试配置,请依次选择 Run > Edit Configurations。如需了解详情,请参阅创建和修改运行/调试配置

更改构建变体

默认情况下,在您点击 Run 后,Android Studio 会构建应用的调试版本,不过这仅供在开发期间使用。

如要更改 Android Studio 使用的构建变体,请在菜单栏中依次选择 Build > Select Build Variant

对于不含原生/C++ 代码的项目,Build Variants 面板有两列:ModuleActive Build Variant。模块的 Active Build Variant 值决定了 IDE 部署到连接的设备并显示在编辑器中的构建变体。

图 1. 对于不含原生/C++ 代码的项目,Build Variants 面板有两列

如需在变体之间切换,请点击模块的 Active Build Variant 单元格,然后从列表字段中选择所需的变体。

对于含有原生/C++ 代码的项目,Build Variants 面板有三列:ModuleActive Build VariantActive ABI。模块的 Active Build Variant 值决定了 IDE 部署到设备并显示在编辑器中的构建变体。对于原生模块,Active ABI 值决定了编辑器使用的 ABI,但不会影响部署的内容。

图 2. 对于含有原生/C++ 代码的项目,Build Variants 面板增加了 Active ABI

如要更改构建变体或 ABI,请点击 Active Build VariantActive ABI 列的单元格,然后从列表中选择所需的变体或 ABI。您更改选择后,IDE 会自动同步您的项目。 更改应用或库模块的任一列都会将更改应用于所有相关行。

默认情况下,新项目设置有两个构建变体:调试和发布变体。您需要构建发布变体,以便为应用的公开发布做好准备

如需构建应用的其他变体(每个变体具有不同的功能或设备要求),您可以定义其他构建变体

构建您的项目

Run 按钮 用于构建应用并将其部署到设备。不过,要构建应用以共享或上传到 Google Play,您需要使用 Build 菜单中的某个选项来编译项目的部分或全部代码。在选择表 1 中列出的任意构建选项之前,请务必先选择您要使用的构建变体

表 1. Build 菜单中的构建选项。

菜单项 说明
Make Module 编译自上次构建以来已修改的所选模块中的所有源文件,以及所选模块以递归方式依赖的所有模块。编译包括相关源文件和所有关联的构建任务。您可以通过在 Project 窗口中选择模块名称或模块的某个文件来选择要构建的模块。此命令不会生成 APK。
Make Project 生成所有模块。
Clean Project 删除所有中间/缓存的构建文件。
Rebuild Project 针对所选构建变体运行 Clean Project 并生成 APK。
Build Bundle(s)/APK(s) > Build APK(s)

为所选的变体构建当前项目中所有模块的 APK。构建完成后,系统将显示确认通知,提供指向 APK 文件的链接以及用于在 APK 分析器中对其进行分析的链接。

如果您选择的构建变体是调试构建类型,则使用调试密钥为 APK 签名,然后就可以安装了。如果您选择了发布变体,则默认情况下,APK 处于未签名状态,您必须手动为 APK 签名。 或者,您也可以从菜单栏中依次选择 Build > Generate Signed Bundle/APK

Android Studio 会将您构建的 APK 保存在 project-name/module-name/build/outputs/apk/ 中。

Build Bundle(s)/APK(s) > Build Bundle(s)

为所选的变体构建当前项目中所有模块的 Android App Bundle。构建完成后,系统将显示确认通知,提供指向 app bundle 的链接以及用于在 APK 分析器中对其进行分析的链接。

如果您选择的构建变体是调试构建类型,则系统会使用调试密钥为 app bundle 签名,您可以使用 bundletool 通过 app bundle 将应用部署到连接的设备。如果您选择了发布变体,则默认情况下,app bundle 处于未签名状态,您必须使用 jarsigner 手动为其签名。 或者,您也可以从菜单栏中依次选择 Build > Generate Signed Bundle/APK

Android Studio 会将您构建的 APK 保存在 project-name/module-name/build/outputs/bundle/ 中。

Generate Signed Bundle/APK 使用向导打开一个对话框以设置新的签名配置,并构建已签名的 app bundle 或 APK。您需要先使用发布密钥为您的应用签名,然后才能将其上传到 Play 管理中心。如需详细了解应用签名,请参阅为您的应用签名

注意Run 按钮 可以在设置了 testOnly="true" 的情况下构建 APK,这意味着,只能通过 Android Studio 使用的 adb 安装 APK。如果您想要无需 adb 即可安装的可调试 APK,请选择您的调试变体,然后依次点击 Build Bundle(s)/APK(s) > Build APK(s)

如需详细了解 Gradle 针对每个命令执行的任务,请按照下一部分中的说明打开 Build 窗口。如需详细了解 Gradle 和构建流程,请参阅配置构建

监控构建流程

您可以通过依次点击 View > Tool Windows > Build(或点击工具窗口栏中的 Build 图标 ),查看有关构建流程的详细信息。该窗口显示 Gradle 为构建应用而执行的任务,如图 3 所示。

图 3. Android Studio 中的“Build Output”窗口

  1. “Build”标签页:以树状显示 Gradle 执行的任务,其中每个节点表示一个构建阶段或一组任务依赖项。如果您收到构建时错误或编译时错误,可以检查该树并选择一个元素来查看错误输出,如图 4 所示。

    图 4. 在“Build Output”窗口中检查错误消息

  2. “Sync”标签页:显示 Gradle 为与项目文件同步而执行的任务。与 Build 标签页类似,如果您遇到同步错误,可以在树中选择元素来查找有关错误的更多信息。
  3. Restart:通过为项目中的所有模块生成中间构建文件,执行与依次选择 Build > Make Project 相同的操作。
  4. Toggle view:在以图形树形式显示任务执行情况与显示 Gradle 中更详细的文本输出(这与在 Android Studio 3.0 及更低版本上的 Gradle Console 窗口中显示的输出相同)之间切换。

如果您的构建变体使用产品变种,Gradle 也会调用任务来构建这些产品变种。如需查看所有可用构建任务的列表,请依次点击 View > Tool Windows > Gradle(或点击工具窗口栏中的 Gradle 图标 )。

如果在构建流程中出现错误,Gradle 可能会向您推荐一些命令行选项来帮助您解决问题,如 --stacktrace--debug。如需在构建流程中使用命令行选项,请执行以下操作:

  1. 打开 SettingsPreferences 对话框:
    • 在 Windows 或 Linux 上,从菜单栏中依次选择 File > Settings
    • 在 Mac OSX 上,从菜单栏中依次选择 Android Studio > Preferences
  2. 依次转到 Build, Execution, Deployment > Compiler
  3. 在“Command-line Options”旁边的文本字段中,输入您的命令行选项。
  4. 点击 OK 保存,然后退出。

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

Apply Changes

在 Android Studio 3.5 及更高版本中,Apply Changes 可让您将代码和资源更改推送给正在运行的应用,而无需重启应用(在某些情况下,甚至无需重启当前的 Activity)。当您要部署和测试小范围的增量更改,同时保持设备的当前状态时,这种灵活性可帮助您控制应用的重启范围。Apply Changes 使用搭载 Android 8.0(API 级别 26)或更高版本的设备上支持的 Android JVMTI 实现中的功能。如需详细了解 Apply Changes 的工作原理,请参阅 Android Studio Project Marble:Apply Changes

要求

Apply Changes 操作仅在满足以下条件时可用:

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

使用 Apply Changes

如果要将更改部署到兼容设备,请使用以下选项:

“Apply Changes and Restart Activity”图标 “Apply Changes and Restart Activity”图标

尝试通过重启 Activity 但不重启应用来应用资源和代码更改。通常,如果您修改了方法正文中的代码或修改了现有资源,则可以使用此选项。

您也可以按 Ctrl+Alt+F10(或者,在 macOS 上,按 Control+Shift+Command+R)来执行此操作。

“Apply Code Changes”图标 “Apply Code Changes”图标

尝试仅应用代码更改而不重启任何内容。 通常,如果您修改了方法正文中的代码,但没有修改任何资源,则可以使用此选项。如果您既修改了代码,又修改了资源,则应改用 Apply Changes and Restart Activity

您也可以按 Ctrl+F10(或者,在 macOS 上,按 Control+Command+R)来执行此操作。

“Run”图标 “Run”图标

部署所有更改并重启应用。如果使用任一 Apply Changes 选项都无法应用您所做的更改,请使用此选项。如需详细了解需要重启应用的更改类型,请参阅 Apply Changes 的限制

为 Apply Changes 启用 Run 回退机制

在您点击 Apply Changes and Restart ActivityApply Code Changes 后,Android Studio 会构建新 APK 并确定是否可以应用更改。如果无法应用更改并且会导致 Apply Changes 失败,则 Android Studio 会改为提示您重新运行您的应用(通过点击“Run”图标 “Run”图标)。不过,如果您不想在每次发生这种情况时都收到提示,则可以将 Android Studio 配置为在无法应用更改时自动重新运行您的应用。

如需启用此行为,请按以下步骤操作:

  1. 打开 SettingsPreferences 对话框:

    • 在 Windows 或 Linux 上,从菜单栏中依次选择 File > Settings
    • 在 macOS 上,从菜单栏中依次选择 Android Studio > Preferences
  2. 依次转到 Build, Execution, Deployment > Deployment

  3. 选中复选框以针对任一 Apply Changes 操作启用自动 Run fallback。

  4. 点击确定

Apply Changes 的限制

Apply Changes 旨在加快应用部署流程。不过,它的使用时机存在一些限制。如果您在使用 Apply Changes 时遇到任何问题,请提交错误

需要重启应用才能实现的代码更改

某些代码和资源更改必须在重启应用之后才能应用,其中包括以下更改:

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

库和插件

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

  • 如果库或插件更改应用的清单,您不能使用 Apply Code Changes 图标 “Apply Code Changes”图标Apply Changes and Restart Activity 图标 “Apply Changes and Restart Activity”图标,而必须重启应用,然后才能看到相应更改。
  • 如果库或插件更改应用的资源文件,您不能使用 Apply Code Changes 图标 “Apply Code Changes”图标,而必须使用 Apply Changes and Restart Activity 图标 “Apply Changes and Restart Activity”图标 来查看相应更改。

您可以通过为调试构建变体停用所有自动更新来避免这些限制。

例如,Crashlytics 在每次构建过程中使用唯一的构建 ID 更新应用资源,这会阻止您使用 Apply Code Changes 图标 “Apply Code Changes”图标,并且您需要重启应用的 Activity 才能看到相应更改。您可以停用此行为,以便能将 Apply Code Changes 与 Crashlytics 一起用于调试 build。

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

如果您的代码直接引用已在设备上安装的应用 APK 中的内容,在您点击 Apply Code Changes 图标 “Apply Code Changes”图标 后,该代码可能会导致崩溃或出现异常。 发生此行为的原因是,当您点击 Apply Code Changes 时,设备上的底层 APK 会在安装过程中被替换。在这些情况下,您可以改为点击 Apply Changes and Restart Activity 图标 “Apply Changes and Restart Activity”图标Run 图标 “Run”图标