今天,我们正式庆祝 Jetpack Compose 1.0 发布五周年。从 2021 年 7 月 28 日发布的 1.0 版本到最新的 1.11 版本,我们见证了 API 在过去几年中的显著发展,现在让我们一起庆祝这一时刻。
当我们正式发布 1.0 版本时,我们承诺提供一种更简单、更快速、更直观的方式来构建 Android 原生界面。回过头来看,可以说 Compose 不仅兑现了这一承诺,还彻底改变了 Android 生态系统,如今排名前 1,000 的应用中有 68% 以上都在生产环境中使用它。
历史记录
在过去的五年中,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 Dev Challenge。我们向社区发起挑战,要求使用 Compose 构建四项不同的任务,让我们的 Feed 充斥着 Puppy 应用、时钟和天气应用,并为我们提供了大量直接反馈,帮助我们确定了 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 方面的出色合作伙伴,通过 Compose Multiplatform 扩展了 Compose 的跨平台功能,并让桌面、iOS 和 Web 开发者也能享受到 Compose 的优势。
我们非常喜欢关注 JetpackCompose.app 的 Dispatch、 AndroidWeekly 和 jetc 等最受欢迎的新闻简报,这些简报可帮助 Android 开发者及时了解 Compose 和 Android 世界的最新动态。
另一位杰出的贡献者是 sinasamaki。他们使用 Compose 创造了许多令人愉悦的体验,例如这个有趣的 ribbon 修饰符和 glitchy 效果:
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,甚至使用 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 开发者 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 开发见解发送到您的收件箱 每周。