Compose Multiplatform 1.12.0 发布:MCP 服务器、Web 自动字体回退与桌面窗口 API v2
JetBrains 官方博客发布文章,由 Elvira Mustafina 撰写,宣布 Compose Multiplatform 1.12.0 正式发布。Compose Multiplatform 是 JetBrains 基于 Google Jetpack Compose 开发的跨平台 UI 框架,支持使用 Kotlin 编写一次代码,在 Android、iOS、桌面(Windows/macOS/Linux)和 Web 上运行。1.12.0 版本带来了多项重要更新,包括面向 AI 助手的新工具、Web 资源管理改进,以及更精细的桌面窗口状态控制。
版本亮点
Compose Multiplatform 1.12.0 的核心更新包括:
- MCP 服务器 for AI agents in Compose Hot Reload:通过 Model Context Protocol(MCP)服务器,将 AI 编码 Agent 连接到运行中的应用
- Web 自动字体回退(Automatic font fallback for web):Web 平台自动处理应用字体未覆盖的字符
- 桌面窗口和对话框 API v2:引入实验性的 v2 版本窗口和对话框 API
MCP 服务器:AI Agent 与运行中应用的连接
什么是 MCP
Model Context Protocol(MCP)是一个开放协议,用于连接 AI 模型与外部工具和数据源。通过 MCP,AI 编码 Agent 可以:
- 访问外部工具和 API
- 获取运行时上下文
- 执行操作并获取反馈
- 与开发环境无缝集成
MCP 正在成为 AI 编码工具的标准协议,被 Cursor、Claude Code、GitHub Copilot 等主流工具支持。
Compose Hot Reload 的 MCP 服务器
Compose Multiplatform 1.12.0 在 Compose Hot Reload 中内置了实验性的 MCP 服务器,将 AI 编码 Agent 连接到运行中的应用。
通过 MCP 服务器,AI Agent 可以执行以下操作:
1. 触发热重载(Trigger reloads)
AI Agent 可以在修改代码后自动触发热重载:
- 检测代码变更
- 触发 Compose Hot Reload
- 验证重载是否成功
- 减少人工操作
2. 截图(Take screenshots)
AI Agent 可以获取运行中应用的截图:
- 查看当前 UI 状态
- 验证 UI 变更效果
- 检测布局问题
- 记录 UI 状态用于分析
3. 检查语义树(Inspect the semantic tree)
AI Agent 可以检查 Compose 的语义树:
- 查看 UI 组件结构
- 理解组件层级关系
- 检查组件属性和状态
- 定位特定的 UI 元素
4. 模拟点击和文本输入(Simulate clicks and text input)
AI Agent 可以模拟用户交互:
- 点击特定的 UI 元素
- 输入文本
- 触发交互事件
- 测试用户流程
5. 读取应用日志(Read application logs)
AI Agent 可以读取应用的运行日志:
- 检测运行时异常
- 分析错误信息
- 监控应用状态
- 诊断问题
实际价值
MCP 服务器的实际价值在于让 AI Agent 能够验证自己的编辑结果:
传统的 AI 编码工作流:
- AI Agent 修改代码
- 开发者手动运行应用
- 开发者查看 UI 效果
- 开发者告诉 AI Agent 结果
- AI Agent 根据反馈继续修改
使用 MCP 服务器后的工作流:
- AI Agent 修改代码
- AI Agent 触发热重载
- AI Agent 检查渲染的 UI
- AI Agent 检测运行时异常
- AI Agent 自动迭代修复
这意味着 AI Agent 可以自主完成 UI 开发的闭环,不需要开发者不断描述屏幕上显示的内容。
如何使用
使用 Compose Hot Reload 的 MCP 服务器:
- 启用 Compose Hot Reload
- 启动应用
- 在 AI 编码工具中配置 MCP 连接
- AI Agent 自动发现可用工具
- AI Agent 使用工具与应用交互
完整的工具列表和连接说明可以在 Compose Hot Reload 文档中找到。
Web 自动字体回退
问题背景
在 Web 平台上,字体处理一直是挑战:
- 应用通常只打包特定的字体
- 不同语言需要不同的字体(日语、阿拉伯语、天城文等)
- Emoji 需要专门的字体
- 打包所有字体会显著增加应用体积
- 未覆盖的字符会显示为方框或乱码
传统解决方案:
- 手动打包所有需要的字体
- 使用系统字体(但不同系统字体不同)
- 动态加载字体(但需要手动管理)
自动字体回退机制
Compose Multiplatform 1.12.0 for Web 引入了自动字体回退机制:
当渲染遇到应用字体未覆盖的字符时:
- 检测到未解析的字符
- 自动下载匹配的 Noto 字体子集
- 使用下载的字体重新渲染受影响的文本
- 缓存已下载的字体子集,避免重复下载
支持的字符
自动字体回退支持多种字符集:
- 日语:平假名、片假名、汉字
- 阿拉伯语:阿拉伯字母及其变体
- 天城文(Devanagari):印地语、梵语等使用的文字
- Emoji:各种表情符号
- 其他 Noto 字体覆盖的字符集
优势
自动字体回退的优势:
- 无需手动打包字体:减少应用体积
- 正确渲染所有字符:避免方框和乱码
- 按需加载:只下载需要的字体子集
- 自动缓存:提高后续渲染性能
- 开发者无感知:不需要额外的代码
桌面窗口和对话框 API v2
背景
Compose Multiplatform 桌面平台的窗口管理 API 一直在演进:
- 早期版本提供基本的窗口创建和管理
- 随着应用复杂度增加,需要更精细的控制
- 不同平台(Windows/macOS/Linux)的窗口行为有差异
- 需要更现代、更一致的 API 设计
API v2 的改进
Compose Multiplatform 1.12.0 引入了实验性的 v2 版本窗口和对话框 API,主要改进包括:
1. 更精细的窗口状态控制
- 窗口位置和大小的更精确控制
- 窗口状态(最小化、最大化、全屏)的管理
- 窗口焦点和激活状态的控制
- 窗口透明度和模糊效果
2. 更一致的跨平台行为
- 统一不同平台的窗口 API
- 减少平台特定的代码
- 提供一致的默认行为
- 允许平台特定的扩展
3. 更现代的 API 设计
- 使用 Kotlin 的现代语言特性
- 更类型安全的 API
- 更好的组合性
- 与 Compose 的状态管理更好集成
4. 对话框改进
- 更灵活的对话框创建
- 模态和非模态对话框的统一处理
- 对话框位置和大小的控制
- 自定义对话框内容的更好支持
实验性状态
窗口和对话框 API v2 目前是实验性的:
- API 可能在未来版本中发生变化
- 需要显式启用实验性 API
- 鼓励开发者试用并提供反馈
- 稳定版本将在未来发布
其他改进
性能优化
1.12.0 版本还包含多项性能优化:
- 更快的组合(Composition)性能
- 更高效的重组(Recomposition)
- 减少内存分配
- 改进的渲染性能
- 更快的启动时间
兼容性
- 与 Kotlin 最新版本兼容
- 与 Jetpack Compose 最新版本对齐
- 支持 Android、iOS、桌面、Web 全平台
- 向后兼容现有代码
工具链改进
- 更好的 IDE 支持
- 改进的调试体验
- 更详细的错误信息
- 更好的 Hot Reload 稳定性
升级指南
版本更新
在项目中升级到 Compose Multiplatform 1.12.0:
// build.gradle.kts
plugins {
id("org.jetbrains.compose") version "1.12.0"
}
迁移注意事项
- 检查依赖兼容性:确保所有依赖与 1.12.0 兼容
- 测试现有功能:全面测试应用的所有功能
- 尝试新功能:逐步引入 MCP 服务器、自动字体回退等新功能
- 关注实验性 API:窗口 API v2 是实验性的,生产环境谨慎使用
- 查看迁移指南:参考官方的 What's new 和发布说明
完整更新说明
完整的变更列表可以在以下位置找到:
- What's new in Compose Multiplatform 1.12.0
- GitHub 上的发布说明(Release Notes)
- Compose Multiplatform 官方文档
对开发者的意义
AI 驱动的 UI 开发
MCP 服务器的引入标志着 UI 开发进入 AI 驱动的新阶段:
- AI Agent 可以自主完成 UI 开发闭环
- 减少开发者与 AI 之间的反复沟通
- 提高 UI 开发的效率和质量
- 降低 UI 开发的门槛
跨平台开发的成熟
Compose Multiplatform 的持续成熟表明:
- Kotlin 跨平台开发已经生产就绪
- 一次编写、多平台运行成为现实
- 跨平台 UI 框架可以达到原生级别的体验
- JetBrains 在跨平台领域的持续投入
Web 平台的增强
Web 平台的自动字体回退等改进表明:
- Compose Multiplatform for Web 正在成熟
- Web 平台的体验正在接近原生
- 更多的 Web 特定功能正在被支持
- Web 成为 Compose Multiplatform 的一等平台
总结
Compose Multiplatform 1.12.0 是一个重要的版本更新,带来了 MCP 服务器、Web 自动字体回退和桌面窗口 API v2 三项核心更新。MCP 服务器通过 Model Context Protocol 将 AI 编码 Agent 连接到运行中的应用,让 Agent 能够触发热重载、截图、检查语义树、模拟交互和读取日志,从而自主验证编辑结果,实现 UI 开发的闭环。Web 自动字体回退机制自动处理应用字体未覆盖的字符,按需下载 Noto 字体子集,确保日语、阿拉伯语、天城文和 Emoji 等字符正确渲染,同时避免打包所有字体增加应用体积。桌面窗口 API v2 提供了更精细的窗口状态控制、更一致的跨平台行为和更现代的 API 设计。这些更新表明 Compose Multiplatform 正在 AI 驱动开发、跨平台一致性和平台特定功能等方向持续演进。对于使用 Kotlin 进行跨平台 UI 开发的团队来说,1.12.0 版本值得关注和升级。
来源:https://blog.jetbrains.com/kotlin/2026/08/compose-multiplatform-1-12-0/