设置 Compose 编译器
1、具体实现
- 在
libs.versions.toml文件中,添加如下内容
toml
[versions]
kotlin = "2.0.0"
[plugins]
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
# 添加 Compose 编译器
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
- 在项目级
build.gradle.kts文件中,添加如下内容,项目级声明,告诉 Gradle 这个插件可能会用,但不激活
kotlin
plugins {
alias(libs.plugins.kotlin.compose) apply false
}
- 在模块级
build.gradle.kts文件中,添加如下内容,模块级启用,在具体的模块真正激活插件
kotlin
plugins {
alias(libs.plugins.kotlin.compose)
}
2、补充学习
-
可以直接在模块级启用,项目级声明不是必须的
-
项目级声明的真正价值在于,项目级
build.gradle.kts文件只声明版本,不应用,各个模块级build.gradle.kts文件继承版本,直接应用 -
版本集中在
libs.versions.toml文件管理,所有模块版本统一,升级只需改一处 -
对于单模块项目,可以直接模块级启用;对于多模块项目,项目级声明更好
设置 Compose 依赖项
1、具体实现
- 在模块级
build.gradle.kts文件中,添加如下内容,以在 Android Studio 中启用 Compose 功能
kotlin
android {
buildFeatures {
compose = true
}
}
- 设置 Compose 依赖项
kotlin
dependencies {
val composeBom = platform("androidx.compose:compose-bom:2026.04.01")
implementation(composeBom)
androidTestImplementation(composeBom)
// Choose one of the following:
// Material Design 3
implementation("androidx.compose.material3:material3")
// or skip Material Design and build directly on top of foundational components
implementation("androidx.compose.foundation:foundation")
// or only import the main APIs for the underlying toolkit systems,
// such as input and measurement/layout
implementation("androidx.compose.ui:ui")
// Android Studio Preview support
implementation("androidx.compose.ui:ui-tooling-preview")
debugImplementation("androidx.compose.ui:ui-tooling")
// UI Tests
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
debugImplementation("androidx.compose.ui:ui-test-manifest")
// Optional - Add window size utils
implementation("androidx.compose.material3.adaptive:adaptive")
// Optional - Integration with activities
implementation("androidx.activity:activity-compose:1.13.0")
// Optional - Integration with ViewModels
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0")
// Optional - Integration with LiveData
implementation("androidx.compose.runtime:runtime-livedata")
// Optional - Integration with RxJava
implementation("androidx.compose.runtime:runtime-rxjava2")
}
2、解读
kotlin
val composeBom = platform("androidx.compose:compose-bom:2026.04.01")
implementation(composeBom)
androidTestImplementation(composeBom)
-
BOM(Bill of Materials,物料清单)统一管理所有 Compose 库的版本,确保兼容性,后续依赖不需要写版本号,由 BOM 自动决定
-
主代码模块使用 BOM,后续所有 Compose 依赖无需写版本号
-
测试模块也使用同一个 BOM,保证测试代码与主代码版本一致
kotlin
// Choose one of the following:
// Material Design 3
implementation("androidx.compose.material3:material3")
// or skip Material Design and build directly on top of foundational components
implementation("androidx.compose.foundation:foundation")
// or only import the main APIs for the underlying toolkit systems,
// such as input and measurement/layout
implementation("androidx.compose.ui:ui")
| 依赖项 | 说明 |
|---|---|
material3 |
Material Design 3 组件(按钮、卡片等),大多数项目选这个 |
foundation |
无 Material 风格的基础组件(例如,BasicTextField) |
ui |
最底层,布局、输入、测量,需要自己构建 UI |
- 一般只选
material3,它已包含 foundation 和 ui
kotlin
// Android Studio Preview support
implementation("androidx.compose.ui:ui-tooling-preview")
debugImplementation("androidx.compose.ui:ui-tooling")
// UI Tests
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
debugImplementation("androidx.compose.ui:ui-test-manifest")
| 依赖项 | 说明 |
|---|---|
ui-tooling-preview |
@Preview 注解支持 |
ui-tooling |
交互式预览、检查布局 |
ui-test-junit4 |
UI 测试框架 |
ui-test-manifest |
测试用的 AndroidManifest |
kotlin
// Optional - Add window size utils
implementation("androidx.compose.material3.adaptive:adaptive")
// Optional - Integration with activities
implementation("androidx.activity:activity-compose:1.13.0")
// Optional - Integration with ViewModels
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0")
// Optional - Integration with LiveData
implementation("androidx.compose.runtime:runtime-livedata")
// Optional - Integration with RxJava
implementation("androidx.compose.runtime:runtime-rxjava2")
| 依赖项 | 说明 |
|---|---|
adaptive |
窗口大小适配工具 |
activity-compose |
将 Compose 与 ComponentActivity 深度集成 |
lifecycle-viewmodel-compose |
ViewModel 集成 |
runtime-livedata |
LiveData 集成 |
runtime-rxjava2 |
RxJava2 集成 |