~/VibeHandbook
免費 PDF

應用 / 行動端

developer.android.com

Android (Jetpack Compose)

它是什麼

先打個比方:傳統做法像你自己一步步搬傢俱——親手把每件東西擺到位,之後想換個樣子還得再去挪。宣告式做法則像你只把"裝修好的房間該長什麼樣"描述給裝修師傅,由對方負責擺放,你想換樣子時只要改一下描述即可。Jetpack Compose 是 Android 現代化的宣告式 UI(使用者介面,螢幕上看得見、可互動的部分)工具包。你不再用 XML 定義佈局、再通過 view 引用去修改它,而是編寫描述給定狀態下 UI 的可組合(composable)Kotlin 函式。框架會在狀態變化時重新繪製。它如今是 Google 推薦的原生 Android 介面構建方式,並與更廣泛的 Jetpack 庫(導航、生命週期、資料)協同工作。

優勢

  • 宣告式且 Kotlin 原生——UI 與邏輯統一在一種語言中,無需 XML 佈局。
  • 狀態驅動的重組(recomposition)讓介面自動與狀態保持同步。
  • 比舊的 View 體系樣板程式碼更少;構建塊強大且可組合。
  • 內建 Material Design 元件、主題、動畫和無障礙支援。
  • 可與既有的基於 View 的程式碼互操作,因此可以漸進式採用。

取捨

  • 重組行為可能很微妙;狀態放錯位置會導致多餘的重繪或 bug。
  • 需要相對較新的 Android 工具鏈和最低 SDK(軟體開發工具包,構建應用所用的工具與庫的集合)設定。
  • 心智模型不同於舊的命令式方式,因此存在學習曲線。
  • 一些成熟的僅支援 View 的庫仍需要互操作包裝層。

最適合

對於希望擁有現代、可維護程式碼庫並快速迭代的全新原生 Android 應用,Jetpack Compose 是正確的選擇。它與 Kotlin 和協程天然契合。

Vibe coding 契合度

Compose 很適合 AI 輔助開發,因為可組合函式都是狀態的小型純函式——易於生成、預覽,並能孤立地驗證。可以讓助手把狀態從可組合函式中提升出去(值向下傳,事件向上傳),讓每個可組合函式保持職責單一,並用不可變資料來驅動列表。@Preview 註解讓你無需執行整個應用就能直觀檢視生成的 UI,從而收緊反饋迴路。

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }
    Column {
        Text("Count: $count")
        Button(onClick = { count++ }) { Text("Add") }
    }
}