今天,我們要正式慶祝 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 工具包團隊正考慮將 UI 工具包解除綁定至程式庫,以加快開發速度,並讓開發人員更輕鬆地採用及控管更新。同時,另一個團隊正在研究新概念,打算在 Kotlin 中嵌入 XML,藉此建構宣告式版面配置,如下所示:
這兩項工作合併後,就產生了您今天所知的內容:完全宣告式的 UI 工具包,可運用編譯器外掛程式、執行階段和 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 建構四種不同的工作,讓我們的動態消息充滿 Puppy 應用程式、時鐘和天氣應用程式,並直接提供大量意見回饋,協助我們打造 1.0 版。
Compose 持續發展,從推出一系列 Material 2 元件,到現在支援 Material 3 Expressive。
展望未來
目前 Compose 1.11 是最新版本,1.12 即將推出,與 5 年前的 1.0 相比,功能更加豐富。今年,我們推出了更多適應性 API,例如 FlexBox、Grid、MediaQuery 和 Styles。這些 API 可讓您使用 Compose,進一步開發進階的自適應 UI。
在 2026 年 Google I/O 大會上,我們宣布現在將以 Compose 為優先,也就是說,日後所有 UI 開發作業都只會使用 Compose,而 Views 工具包則會進入維護模式。Material Design 也完全轉向 Compose,代表 findViewById era 時代即將結束。
社群是 Compose 的核心
多年來,您以各種創意範例激發我們的靈感,我們很樂意再分享幾個令人驚豔的案例。JetBrains 一直是 Google 的重要合作夥伴,透過 Compose Multiplatform 擴充 Compose 的適用平台,讓桌機、iOS 和網頁開發人員也能享有 Compose 的優勢。
我們很喜歡閱讀 JetpackCompose.app 的 Dispatch、AndroidWeekly 和 jetc 等熱門電子報,協助 Android 開發人員掌握 Compose 和 Android 的最新動態。
另一位傑出貢獻者是 sinasamaki。他們使用 Compose 打造了許多令人愉悅的體驗,例如這個有趣的緞帶修飾符和故障效果:
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 為終端機建構 UI (mosaic))。多年來,Chris Banes 打造了許多 Compose 程式庫,我們最近最喜歡的是用於背景模糊的 Haze,以及許多 Google Developers 專家,例如 Akshay Chordiya、 Huyen Tue Dao 和 Katie Barnett,他們都為 Compose 的成功貢獻良多。但這不是要選出個人,因為有許多優秀的貢獻者為 Compose 程式碼集付出心力,而且許多人持續以有趣的範例、程式庫和深入的演講激勵我們。如果沒有社群,Jetpack Compose 就無法像現在一樣成功。
期待下一個 5 年,以及更多精彩內容!
Jetpack Compose 從實驗性概念發展為 Android UI 開發的標準。感謝 Google 的整個 Toolkit 團隊,以及全球出色的開發人員社群,他們撰寫程式庫、回報錯誤,並突破宣告式 UI 的極限。
本週我們將在全球各地舉辦現場生日派對,並於 7 月 30 日下午 1 點 (世界標準時間) 在 Android 開發人員 YouTube 頻道直播「生日派對」。屆時我們將一起討論 Compose,並回答您的問題!
祝您在接下來的 5 年內創作更多好歌!
-
產品最新消息自 Jetpack Compose 推出以來,我們投入了近 5 年的時間,為您提供各種功能、效能和工具,協助您在各種 Android 裝置上建構出色的 UI。
Nick Butcher • 2 分鐘小故事 -
產品最新消息Jetpack Compose 2025 年 12 月版現已推出穩定版。這個版本包含核心 Compose 模組 1.10 版和 Material 3 1.4 版,新增了多項功能,並大幅提升效能。
Nick Butcher • 6 分鐘小故事 -
產品最新消息提供安全的線上體驗,並保護使用者免於受到傷害,是 Google Play 的首要之務。
Paul Feng • 2 分鐘小故事
每週透過電子郵件接收最新的 Android 開發洞察資訊。