产品动态

庆祝 Jetpack Compose 发布 5 周年

阅读用时:5 分钟
2026 年 7 月 28 日
3 位作者
Rebecca Franks, Nick Butcher, Loryn Hairston

今天,我们正式庆祝 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_compose_everywhere.png

我们与 Jetpack 工程主管 Clara Bayarri 以及该团队的两名前主管 Romain Guy 和 Chet Haase,以及高级工程总监 Tor Norbye 录制了一集 Android Developers Backstage 节目。在本集中,他们讨论了 Compose 的历史和早期的开发情况。

timeline.png
Compose 历年亮点

回顾

Compose 的早期与您今天所了解的情况大相径庭。Android 团队内部同时进行了两个项目。

当时,Views 工具包团队正在考虑将界面工具包拆分为一个库,以帮助提高开发速度,并让开发者更轻松地采用和控制更新。与此同时,一个团队正在研究一种新颖的想法,即通过在 Kotlin 中嵌入 XML 来构建声明式布局,如下所示:

jetpack_compose_early_code.png

这两项工作合并后产生了您今天所了解的内容:一个完全声明式的界面工具包,它利用了编译器插件、运行时和 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

material2.png
Compose 中的 Material 2

展望未来

截至今天,Compose 1.11 是最新版本,1.12 即将推出,它提供的功能远超 5 年前的 1.0 版本。今年,我们推出了更多自适应 API,例如FlexBoxGridMediaQueryStyles。借助这些 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 的 DispatchAndroidWeeklyjetc 等最受欢迎的新闻简报,这些简报可帮助 Android 开发者及时了解 Compose 和 Android 世界的最新动态。

另一位杰出的贡献者是 sinasamaki。他们使用 Compose 创造了许多令人愉悦的体验,例如这个有趣的 ribbon 修饰符和 glitchy 效果:

ribbon_modifier_sinasamaki.gif

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()
saket_touch_robot.gif

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 年一切顺利,祝您创作愉快!

继续阅读