Compose Multiplatform:跨平台UI开发的声明式框架
Compose Multiplatform 是一个开源的声明式框架,用于在多个平台上共享高质量的用户界面。它已经为移动和桌面平台生产就绪,由 Kotlin Multiplatform 和 Jetpack Compose 提供支持,由 JetBrains 开发。
主要特性
原生体验与轻松互操作
Compose Multiplatform 提供原生质量的UI,支持平滑滚动、响应式文本编辑和平台特定手势。借助 Kotlin Multiplatform,您可以轻松访问原生API,集成地图、相机和视频等功能,而无需牺牲性能或用户体验。
利用Android技能实现跨平台覆盖
使用您的 Jetpack Compose 技能跨平台开发。Compose Multiplatform 支持熟悉的状态管理、布局和动画API,以及Material组件,使得将Android架构带到其他平台变得容易。
渐进式采用
从小开始或全面投入,无需额外工作。Compose Multiplatform 可以融入您现有的应用,无论是共享一个组件、一个屏幕还是整个UI。保留您现有的 SwiftUI、Android Views 或 Swing 代码,无需重写任何内容。
热重载
通过 Compose Hot Reload,在桌面上即时调整和预览UI,无需重启,加速开发工作流程。
无缝工具支持
享受智能IDE支持,通过 IntelliJ IDEA 和 Android Studio 的 KMP 插件,提供通用预览、跨语言导航、重构和调试。
AI驱动的代码生成
借助 JetBrains 的编码代理 Junie,加速UI编码。Compose Multiplatform 与 Jetpack Compose 共享API,因此LLMs已经得到良好训练,帮助您更快地生成UI组件和完整屏幕。
繁荣的生态系统
利用丰富的生产就绪 Kotlin Multiplatform 库,包括官方的多平台 Jetpack 库。加入不断增长的社区,共同塑造跨平台开发的未来。
代码示例
以下是一个简单的按钮示例:
Button(onClick = { logger.info("Pressed!") }) { Text("Hello $platform") }
以及一个数据获取和UI更新的示例:
@Serializable
data class Friend(val name: String)
@Composable
fun FriendCard(name: String) {
var myFriend by remember { mutableStateOf<Friend?>(null) }
LaunchedEffect(name) {
val friend = ktorClient.get("$host/$name.json").body<Friend>()
myFriend = friend
}
// ...
}
用户见证
Alex Askerov,Wrike 移动技术主管:
“Wrike 早期采用 Compose Multiplatform,自其测试版以来,生产应用中就包含了CMP驱动的功能。今天,我们的生产应用包含日历、看板、仪表板、图表、时间表批准等,全部使用CMP完成。它帮助我们跨平台提供一致、高质量的体验,同时简化开发流程。随着iOS版本现在趋于稳定,我们很高兴看到这项技术成熟,并期待扩大其实现。”
Johannes Svensson,Instabee Android 开发者:
“Compose Multiplatform 真正简化了添加iOS支持。共享代码的水平,而不增加复杂性,令人震惊。它确实简化了应用开发,使我们能够以惊人的速度创新和迭代。”
Kashif Mehmood,Markaz 移动工程主管:
“Markaz 是巴基斯坦第二大电子商务平台,拥有超过500万下载量和100万+活跃用户。该应用包括100多个屏幕,完全使用 Compose Multiplatform 构建,结合共享UI与原生集成,如相机、QR扫描、支付、原生导航和分析。该应用完全优化以在低端设备和慢速网络上运行,使其对生活在偏远地区和使用旧设备的人们可访问。应用大小在Android上保持在10MB以下,在iOS上为137MB。”
Suresh Maidaragi,Physics Wallah 移动平台首席工程师:
“我们 Physics Wallah 应用的大约20%,在 Google Play 上有超过1000万下载量——包括我们最大的功能之一 Pitara——是使用 Kotlin Multiplatform 和 Compose Multiplatform 构建的,在Android和iOS平台上共享UI和业务逻辑。应用的其余部分使用 Jetpack Compose 和 XML 的组合。这一转变简化了我们的开发流程,并允许我们将Android和iOS工程师统一到一个移动团队中。”
尝试 Compose Multiplatform
开发适用于Android、iOS、桌面和Web的共享UI。
开始使用