作为一名移动开发者,你通常会逐步开发应用的 UI,而不是一次性开发所有内容。Android Studio 通过 Jetpack Compose 提供了一些工具,这些工具无需完整构建即可检查、修改值并验证最终结果,从而支持这种方法。
实时编辑
实时编辑是一个功能,允许你实时更新模拟器和物理设备中的可组合项。此功能最大程度地减少了编写和构建应用之间的上下文切换,让你可以更长时间地专注于编写代码,而不会被打断。
实时编辑有三种模式
- 手动:使用 Control+'(macOS 上为 Command+')手动推送时应用代码更改。
- 保存时手动:使用 Control+S(macOS 上为 Command+S)手动保存时应用代码更改。
- 自动:当你更新可组合函数时,在你的设备或模拟器中应用更改。
实时编辑专注于与 UI 和 UX 相关的代码更改。实时编辑不支持方法签名更新、添加新方法或类层次结构更改等更改。有关更多信息,请参阅实时编辑的限制列表。
此功能并非构建和运行应用或应用更改的替代方案。相反,它旨在优化你在构建、部署和迭代以开发 Compose UI 时的工作流程。
最佳实践工作流程如下
- 设置你的应用,使其可以运行。
- 尽可能多地使用实时编辑,直到你需要进行实时编辑不支持的更改,例如在应用运行时添加新方法。
- 进行不支持的更改后,点击运行重新启动你的应用并恢复实时编辑。
开始使用实时编辑
要开始使用,请按照以下步骤创建空的 Compose Activity,为你的项目启用实时编辑,并使用实时编辑进行更改。
设置你的新项目
在开始之前,请确保已安装 Android Studio Giraffe 或更高版本,并且你的物理设备或模拟器的 API 级别至少为 30。
打开 Android Studio,并在欢迎使用 Android Studio对话框中选择新建项目。如果已打开项目,则可以通过导航到文件>新建>新建项目来创建新项目。
为手机和平板电脑选择空 Compose Activity模板,然后点击下一步。
使用所需信息完成新建项目对话框:名称、包名、保存位置、最低 SDK 和构建配置语言。
点击完成。
启用实时编辑
导航到设置以启用实时编辑。
- 在 Windows 或 Linux 上,导航到文件>设置>编辑器>实时编辑。
- 在 macOS 上,导航到Android Studio>设置>编辑器>实时编辑。
从设置中选择实时编辑选项和你想要运行的模式。
在手动模式下,每次按下 Control+'(macOS 上为 Command+')时都会推送你的代码更改。在保存时手动模式下,每次手动保存(使用 Control+S(macOS 上为 Command+S))时都会应用你的代码更改。在自动模式下,在你进行更改时,你的代码更改会在你的设备或模拟器中应用。
在编辑器中,打开
MainActivity
文件,它是应用的入口点。点击运行部署你的应用。
打开实时编辑后,最新绿色复选标记将出现在正在运行的设备工具窗口的右上角。
进行并查看更改
在你进行受支持的编辑器更改时,虚拟或物理测试设备会自动更新。
例如,将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 所示。
实时编辑疑难解答
如果在测试设备上看不到你的编辑内容,则 Android Studio 可能无法更新你的编辑内容。检查实时编辑指示器是否显示已过期,如图 5 所示,这表示编译错误。有关错误信息以及如何解决错误的建议,请点击指示器。
实时编辑的限制
以下是当前限制的列表。
[仅适用于 Android Studio Giraffe 及更高版本]实时编辑需要Compose 运行时 1.3.0 或更高版本。如果你的项目使用较低版本的 Compose,则实时编辑将被禁用。
[仅适用于 Android Studio Giraffe 及更高版本]实时编辑需要 AGP 8.1.0-alpha05 或更高版本。如果你的项目使用较低版本的 AGP,则实时编辑将被禁用。
实时编辑需要运行 API 级别 30 或更高的物理设备或模拟器。
实时编辑仅支持编辑函数体,这意味着你无法更改函数名称或签名、添加或删除函数或更改非函数字段。
首次在文件中更改 Compose 函数时,实时编辑会重置应用的状态。这仅在第一次代码更改后发生——你对该文件中 Compose 函数进行的后续代码更改不会重置应用状态。
使用实时编辑修改的类可能会导致一些性能损失。如果你正在评估其性能,请运行你的应用并使用干净的发布版本。
必须执行完整运行,才能使调试器在使用实时编辑修改的类上运行。
当你使用实时编辑编辑正在运行的应用时,它可能会崩溃。如果发生这种情况,你可以使用运行按钮重新部署应用。
实时编辑不会执行项目构建文件中定义的任何字节码操作,例如,使用构建菜单中的选项或点击构建或运行按钮时应用的字节码操作。
非可组合函数会在设备或模拟器上实时更新,并触发完全重新组合。完全重新组合可能不会调用更新后的函数。对于非可组合函数,你必须触发新更新的函数或再次运行应用。
实时编辑不会在应用重新启动时恢复。你必须再次运行应用。
实时编辑仅支持可调试进程。
实时编辑不支持在构建配置中的
kotlinOptions
下使用自定义moduleName
值的项目。实时编辑不适用于多部署部署。这意味着你无法部署到一个设备,然后部署到另一个设备。实时编辑仅在应用最后部署到的设备集上处于活动状态。
实时编辑适用于多设备部署(通过目标设备下拉列表中的选择多个设备创建的对多个设备的部署)。但是,它不是正式支持的,可能会出现问题。如果遇到问题,请报告。
应用更改/应用代码更改与实时编辑不兼容,需要重新启动正在运行的应用。
实时编辑目前不支持 Android Automotive 项目。
有关实时编辑的常见问题
实时编辑的当前状态如何?
实时编辑在 Android Studio Giraffe 中可用。要打开它,请导航到文件>设置>编辑器>实时编辑(macOS 上为Android Studio>设置>编辑器>实时编辑)。
我应该何时使用实时编辑?
当你想快速查看 UX 元素(例如修饰符更新和动画)更新对整体应用体验的影响时,请使用实时编辑。
我应该何时避免使用实时编辑?
实时编辑专注于与 UI 和 UX 相关的代码更改。它不支持方法签名更新、添加新方法或类层次结构更改等更改。有关更多信息,请参阅实时编辑的限制。
我应该何时使用 Compose 预览?
在开发单个可组合项时使用 Compose 预览。预览可视化 Compose 元素并自动刷新以显示代码更改的效果。预览还支持在不同的配置和状态(例如深色主题、语言环境和字体大小)下查看 UI 元素。
文字的实时编辑(已弃用)
Android Studio 可以实时更新预览、模拟器和物理设备中可组合项中使用的一些常量文字。以下是一些受支持的类型
Int
String
Color
Dp
Boolean
可以通过文字的实时编辑 UI 指示器启用文字修饰,从而查看触发实时更新而无需编译步骤的常量文字。
应用更改
应用更改允许你更新代码和资源,而无需将应用重新部署到模拟器或物理设备(存在一些限制)。
每当你添加、修改或删除可组合项时,都可以通过点击应用代码更改按钮来更新应用,而无需重新部署。
推荐内容
- 注意:当 JavaScript 关闭时显示链接文本
- 自定义动画 {:#customize-animations}
- 基于值的动画
- 添加参数