迭代代码开发

作为移动开发者,您往往是逐步开发应用的界面, 而不是一次性开发所有内容Android Studio 大胆尝试这种方法, Jetpack Compose:提供无需完整 build 即可检查的工具, 修改值并验证最终结果。

实时编辑

借助实时编辑功能,您可以更新模拟器中的可组合项,以及 实体设备此功能可最大限度地减少上下文切换 从编写到构建应用的整个过程,让您有更多时间专注于代码编写 不会中断。

实时编辑有三种模式:

  • 手动:使用 Ctrl+'(在 macOS 上为 Command+'
  • 手动保存时:使用 Ctrl+S(在 macOS 上为 Command+S)。
  • 自动:当您更新 可组合函数。

实时编辑侧重于界面和用户体验方面的代码更改,而不支持进行方法签名更新、新方法添加或类层次结构变更等方面的更改。如需了解详情,请参阅实时编辑的限制列表。

此功能不能代替构建和运行应用或 Apply Changes,而旨在优化 Compose 界面开发过程中的构建、部署和迭代工作流程。

最佳实践工作流程如下:

  1. 设置应用,使其能够运行。
  2. 尽可能多地进行实时编辑,直到您需要进行实时编辑功能不支持的更改,例如,在应用运行时添加新方法。
  3. 进行不受支持的更改后,点击 Run 图标 运行
图标 以重启 并继续进行实时编辑。

开始使用实时编辑功能

首先,请按照以下步骤创建一个空的 Compose activity,启用 实时编辑项目,并使用实时编辑功能进行更改。

设置新项目

  1. 开始之前,请确保您使用的是 Android Studio Giraffe 或更高版本 您的物理服务器应用的 API 级别 设备或模拟器至少为 30。

  2. 打开 Android Studio,然后在 Welcome to Android Studio 对话框中选择 New Project。如果您已打开项目,则可以新建 转到文件 >新建 >新建项目

  3. 对于 Phone and Tablet,选择 Empty Compose Activity 模板,然后点击 Next

    Android Studio 中的模板选择
    图 1. 可供选择的模板。对于实时编辑功能 选择 Empty Compose Activity
  4. 使用所需信息填写 New Project 对话框,其中包含名称、软件包名称、保存位置、最低 SDK 和 build 配置语言。

    在 Android Studio 中输入的第 4 步中的示例项目设置
    图 2. 项目设置示例。
  5. 点击 Finish

启用实时编辑功能

  1. 前往设置以启用实时编辑功能。

    • 在 Windows 或 Linux 上,依次前往 File > Settings > Editor > Live Edit
    • 在 macOS 上,依次前往 Android Studio > Settings > Editor > Live Edit
  2. 从设置中选择 Live Edit 选项和要运行的模式。

    在手动模式下,每当您按下按钮时,系统都会推送代码更改 Ctrl+'(在 macOS 上为 Command+')。开启手动模式 保存后,您每次手动保存时,代码更改都会应用 使用 Ctrl + S(在 macOS)。在自动模式下,您的代码更改会应用到您的设备中,或 模拟器。

    Android Studio 设置中的“Live Edit”复选框界面
    图 3. 实时编辑设置。
  3. 在编辑器中,打开 MainActivity 文件,这是应用的入口点。

  4. 点击 Run 图标 界面按钮 以部署应用。

  5. 开启实时编辑功能后,最近 Running Devices 工具窗口的右上角:

    实时编辑功能的绿色对勾标记界面

进行更改并查看更改效果

当您在编辑器中进行支持的更改时,虚拟或实体测试设备 自动更新。

例如,将 MainActivity 中的现有 Greeting 方法修改为 以下:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

您所做的更改会立即显示在测试设备上,如图 4 所示。

应用到设备的 Greeting 方法更改
图 4.显示实时编辑更改的测试设备 Greeting 方法。

排查实时编辑问题

如果您在测试设备上没有看到修改,可能是 Android Studio 运行失败 更新您的修改。查看实时编辑指示器是否显示 Out Of Date(如图 5 所示),表示编译错误。如需了解有关错误的信息以及有关如何解决该错误的建议,请点击指示器。

实时编辑已过期图标
图 5. 实时编辑状态指示器。

实时编辑功能的限制

以下是现有限制的列表。

  • [仅适用于 Android Studio Giraffe 及更高版本] 实时编辑需要 Compose Runtime 1.3.0 或更高版本。 如果您的项目使用较低版本的 Compose,实时编辑功能会 已停用。

  • [仅适用于 Android Studio Giraffe 及更高版本] 实时编辑需要 AGP 8.1.0-alpha05 或 。如果您的项目使用的是较低版本 AGP 中,实时编辑功能已停用。

  • 实时编辑需要一个运行 API 级别的实体设备或模拟器 30 或更高版本。

  • 实时编辑功能仅支持修改函数正文,也就是说,您无法进行下列操作:更改函数名称或签名、添加或移除函数、更改非函数字段。

  • 当您第一次在以下位置更改 Compose 函数时,实时编辑会重置应用的状态 文件。此操作仅在首次代码更改后才会发生,应用状态 您后续对该文件中对 Compose 函数所做的代码更改就会重置。

  • 使用实时编辑功能修改过的类可能会导致性能下降。运行您的 并使用干净的发布构建评估其 性能

  • 您必须执行完整运行,调试程序才能对 使用实时编辑功能进行修改。

  • 使用实时编辑修改正在运行的应用,可能会导致应用崩溃。如果发生这种情况 您可以使用 Run 图标 界面按钮 按钮重新部署该应用。

  • 实时编辑不会执行 项目的 build 文件 - 例如,无法运行 在使用 Build 菜单中的选项构建项目时应用,或者 点击 BuildRun 按钮。

  • 非可组合函数会在设备或模拟器上实时更新,并且 就会触发完全重组完全重组可能不会调用更新后的函数。对于非可组合函数,您必须触发新更新的函数或再次运行应用。

  • 应用重启后,实时编辑不会自动恢复。您必须再次运行应用。

  • 实时编辑功能仅支持可调试的进程。

  • 实时编辑不支持在 build 配置中的 kotlinOptions 下为 moduleName 使用自定义值的项目。

  • 实时编辑功能不适用于多部署部署。这意味着,您不能先部署到一台设备,然后再部署到另一个设备。实时编辑功能仅在 最后一组部署了应用的设备。

  • 实时编辑功能支持多设备部署(部署到多个 通过在目标环境中选择多部设备创建的设备 设备下拉菜单)。不过,它并不属于官方支持范围,因此可能会有 问题。如果您遇到问题,请 请举报

  • Apply Changes/Apply Code Changes 与实时编辑不兼容 并要求重启正在运行的应用

  • 实时编辑功能目前不支持 Android Automotive 项目。

关于实时编辑功能的常见问题解答

  • 实时编辑功能的当前状态是什么?

    Android Studio Giraffe 支持实时编辑功能。若要开启此功能,请按以下步骤操作: 依次点击文件 > 设置 >编辑器 >实时编辑 (Android Studio > 设置 >编辑器 >实时编辑功能 (macOS))。

  • 何时应使用实时编辑功能?

    如果您想快速查看用户体验更新的效果,可以使用实时编辑功能 元素(例如修饰符更新和动画) 体验。

  • 何时应避免使用实时编辑功能?

    实时编辑侧重于界面和用户体验方面的代码更改,不支持 更改,例如方法签名更新、添加新方法或类 层次结构更改。有关详情,请参阅直播限制 修改

  • 何时应使用 Compose 预览?

    开发单个可组合项时,请使用 Compose 预览。预览 直观呈现 Compose 元素并自动刷新以显示 更改代码的影响预览还支持查看 不同的配置和状态,例如深色主题、语言区域和字体 。

实时修改字面量(已弃用)

Android Studio 可以实时更新在预览、模拟器和实体设备中的可组合项中使用的一些常量字面量。下面是一些受支持的类型:

  • Int
  • String
  • Color
  • Dp
  • Boolean

用户在源代码中更改字面量的视频和预览
正在更新
动态

您可以查看触发实时更新的常量字面量, 编译步骤启用文字装饰,方法是使用 字面量界面指示器:

正在为以下内容启用实时编辑功能:
字面量

Apply Changes

Apply Changes 可让您更新代码和资源 而不必将应用重新部署到模拟器或实体设备 限制)。

每当添加、修改或删除可组合项时,您都可以直接更新应用,而无需 通过点击 Apply Code Changes 按钮重新部署:

用户点击“应用更改”
按钮