今天,我们正式庆祝 Jetpack Compose 1.0 发布五周年。从 2021 年 7 月 28 日发布的 1.0 版到最新的 1.11 版,我们看到这些 API 在过去几年中取得了显著的进步,因此我们想借此机会庆祝一下。
当我们正式发布 1.0 版本时,曾承诺提供一种更简单、更快速、更直观的方式来在 Android 上构建原生界面。回首过往,我们可以放心地说,Compose 不仅兑现了这一承诺,还彻底改变了 Android 生态系统,如今排名前 1,000 的应用中有超过 68% 在生产环境中使用 Compose。
历史记录
在过去五年中,Compose 的使用量稳步增长。在早期,我们探讨了如何使用基本的 Box、Row 和 Column 构建布局。如今,我们已扩展 Compose 的适用范围,使其不仅适用于移动设备,还适用于其他设备规格,例如 Compose for TV、WearOS、Glance for Widgets,甚至还适用于配备 Jetpack Compose Glimmer 的带屏眼镜。
我们与 Jetpack 工程主管 Clara Bayarri、该团队的两名前主管 Romain Guy 和 Chet Haase,以及高级工程总监 Tor Norbye 共同录制了一期 Android Developers Backstage 节目。在本期节目中,他们讨论了 Compose 的历史和早期的开发工作。
回顾
Compose 的最初版本与您今天所了解的版本截然不同。Android 团队内部同时开展了两个项目。
当时,Views 工具包团队正考虑将界面工具包解绑为库,以提高开发速度,并让开发者更轻松地采用和控制更新。与此同时,一个团队正在研究一种新颖的想法,即通过在 Kotlin 中嵌入 XML 来构建声明式布局,如下所示:
这两项工作合并后,便产生了您今天所看到的成果 - 一款完全声明式的界面工具包,可充分利用编译器插件、运行时和 Kotlin 的强大功能:
@Composable fun Newsfeed(stories: List<Story>) { LazyColumn { items(stories) { story -> Card { val author = story.author Image(painterResource(author.profilePhoto), contentDescription = author.name) Text(author.name) Text(story.content) if (story.hasCommentsEnabled()) { for(comment in story.comments) { Text(comment.mainContent) } } } } } }
而社区的各位在很早的时候就为我们提供了帮助!在 2021 年之前,Compose 经历了一个预 Alpha 阶段,这有助于确保 Compose 能够解决开发者的难题。
我们最喜欢的回忆之一是 Android 开发者挑战赛。我们向社区发起挑战,要求使用 Compose 构建四项不同的任务,结果我们的 Feed 中充斥着小狗应用、时钟和天气应用,并且我们收到了大量直接反馈,这些反馈帮助我们打造了 1.0 版。
Compose 不断发展,从最初发布时的一组 Material 2 组件,到现在支持 Material 3 Expressive。
展望未来
截至目前,Compose 1.11 是最新版本,1.12 即将推出,与 5 年前的 1.0 相比,它提供了更多功能。今年,我们推出了更多自适应 API,例如 FlexBox、Grid、MediaQuery 和 Styles。借助这些 API,您可以利用 Compose 将高级自适应界面开发提升到新的水平。
在 2026 年 Google I/O 大会上,我们宣布现在将全面转向 Compose,这意味着未来所有界面开发都将仅在 Compose 中进行,而 Views 工具包将进入维护模式。Material Design 也正将重心完全转移到 Compose,这标志着 findViewById era 的时代即将结束。
社区是 Compose 的核心
多年来,您通过各种富有创意的示例向我们展示了如何使用 Compose,这让我们深受启发。我们很乐意再分享一些令人兴奋的示例。Jetbrains 一直是 Google 的重要合作伙伴,通过 Compose Multiplatform 将 Compose 扩展到各个平台,让桌面、iOS 和 Web 开发者也能享受到 Compose 的优势。
我们非常喜欢订阅最受欢迎的简报,例如 JetpackCompose.app 的 Dispatch、AndroidWeekly 和 jetc,这些简报可帮助 Android 开发者及时了解 Compose 和 Android 领域的最新动态。
另一位杰出贡献者是 sinasamaki。他们使用 Compose 打造了许多令人愉悦的体验,例如这个有趣的 Ribbon 修饰符和故障效果:
Saket Narayan 一直以来都是我们在为 Compose 创建实用工具方面的灵感来源,例如 telephoto(一个支持平移和缩放手势以及大图像自动二次采样的库)或最新的库 Touch Robot,可让您轻松测试互动动画:
paparazzi.gif(end = 3_000) { DebitCard( Modifier.testTag("card") ) val touchRobot = rememberTouchRobot() LaunchedEffect(Unit) { touchRobot.onNode(hasTestTag("card")).performGesture { draw( path = createAndroidHeadPath(), duration = 3.seconds, ) } } } /** A path drawing the Android head. */ fun createAndroidHeadPath(bounds: Rect): Path = TODO() |
|
Jake Wharton 以创新方式使用 Compose(例如 molecule,甚至使用 Compose 为终端构建界面 mosaic)。Chris Banes 多年来构建了许多 Compose 库,我们最近最喜欢的是用于模糊背景的 Haze,还有许多 Android Google 开发者专家(例如 Akshay Chordiya、Huyen Tue Dao 和 Katie Barnett),他们为 Compose 的成功做出了贡献。但我们并不是要挑选个人,因为有太多优秀的贡献者为 Compose 代码库做出了贡献,而且你们中的许多人仍在通过有趣的示例、库和深入的讲座来激励我们。如果没有社区,Jetpack Compose 就不会像今天这样成功。
祝愿未来 5 年及更长时间一切顺利!
Jetpack Compose 已从一个实验性想法发展成为 Android 界面开发的标准。感谢 Google 的整个工具包团队,以及编写库、提交 bug 并不断突破声明式界面功能界限的出色全球开发者社区。
本周,我们将在全球各地举办一些线下生日派对,并于 7 月 30 日 13:00(世界协调时间)在 Android Developers YouTube 频道上直播“生日派对”。在此期间,我们将一起讨论 Compose 并回答您的问题!
祝您在接下来的 5 年里创作出更多精彩内容!
-
产品资讯自 Jetpack Compose 发布以来,我们已投入近 5 年的时间,为您提供所需的所有功能、性能和工具,以便您在各种 Android 设备上构建出色的界面。
Nick Butcher • 阅读用时:2 分钟 -
产品资讯今天,Jetpack Compose 2025 年 12 月版已成为稳定版。此版本包含核心 Compose 模块的 1.10 版和 Material 3 的 1.4 版,新增了一些功能并大幅提升了性能。
Nick Butcher • 阅读用时:6 分钟 -
产品资讯Android Studio Quail 2 现已稳定,可供您在生产环境中使用了。它为您的 IDE 带来了多项重大改进,包括并发的智能体工作流、原生集成的内存泄漏分析,以及可感知上下文的崩溃修复。
Amman Asfaw • 阅读用时:3 分钟
每周通过电子邮件接收最新的 Android 开发洞见。