第3章 项目环境搭建与依赖配置
本章聚焦 WorkManager 与 Kotlin 协程结合开发所需的环境准备与 Gradle 依赖配置。正确搭建开发环境是后续所有案例运行的基础,版本不匹配将直接导致编译失败或运行时异常。
3.1 环境要求概览
以下表格列出开发环境各组件的最低版本与推荐版本,所有版本均经过官方兼容性验证。
| 组件 | 最低版本 | 推荐版本 | 关键说明 |
|---|---|---|---|
| Android Studio | Hedgehog (2023.1.1) | Iguana (2023.2.1)+ | 内置 Gradle 与 AGP 支持 |
| JDK | 11 | 17 | AGP 8.x 强制要求 JDK 17 |
| Kotlin | 1.5.0 | 1.9.22+ | WorkManager 2.7+ 需要 Kotlin 1.5+ |
| Android Gradle Plugin | 7.0.0 | 8.2.2+ | 与 Gradle 版本严格配套 |
| Gradle | 7.0 | 8.5+ | 与 AGP 版本严格配套 |
| compileSdk | 31 | 34 | WorkManager 最低 API 21 |
| minSdk | 21 | 26+ | 协程在 API 21+ 稳定运行 |
| targetSdk | 31 | 34 | 与 compileSdk 保持一致 |
3.2 Gradle 依赖配置步骤
在 Android 项目中集成 WorkManager 与协程,需按以下三步完成依赖声明:
- 配置项目级 build.gradle — 声明 AGP 插件版本与 Kotlin 插件版本,统一管理仓库地址。
- 配置模块级 build.gradle — 添加
work-runtime-ktx与kotlinx-coroutines-android依赖,并设置 SDK 版本。 - 同步 Gradle — 点击 Sync Now 下载依赖,并检查版本兼容性错误。
3.3 版本兼容性矩阵
以下矩阵列出 AGP、Gradle、Kotlin 与 JDK 之间的强制配套关系,以及 WorkManager 的推荐基线:
| AGP 版本 | Gradle 版本 | Kotlin 版本 | JDK 版本 | WorkManager |
|---|---|---|---|---|
| 7.0.x – 7.3.x | 7.0 – 7.5 | 1.5.0 – 1.7.x | 11 | 2.5 – 2.7 |
| 7.4.x – 8.0.x | 8.0 – 8.2 | 1.8.0 – 1.8.20 | 17 | 2.7 – 2.8 |
| 8.1.x – 8.3.x | 8.2 – 8.6 | 1.9.0 – 1.9.22 | 17 | 2.9+ |
版本选择建议:推荐使用第三行(粗体)的组合,该组合经过 Google 官方兼容性测试,且 WorkManager 2.9+ 对协程的原生支持最完善。
3.4 完整配置文件示例
以下为使用 Kotlin DSL 的项目级与模块级 build.gradle 配置:
3.4.1 项目级 build.gradle.kts
// 项目级 build.gradle.kts
plugins {
// AGP 插件版本
id("com.android.application") version "8.2.2" apply false
id("com.android.library") version "8.2.2" apply false
// Kotlin 插件版本
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
}
// 统一仓库与任务配置
allprojects {
repositories {
google()
mavenCentral()
}
}
tasks.register("clean", Delete::class) {
delete(rootProject.layout.buildDirectory)
}
3.4.2 模块级 build.gradle.kts
// 模块级 build.gradle.kts
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "com.example.workmanagerdemo"
compileSdk = 34
defaultConfig {
applicationId = "com.example.workmanagerdemo"
minSdk = 26
targetSdk = 34
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
dependencies {
// AndroidX 核心库
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")
// WorkManager (集成协程扩展)
implementation("androidx.work:work-runtime-ktx:2.9.0")
// Kotlin 协程
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
// 协程核心库 (通常由 android 库传递依赖, 显式声明用于版本锁定)
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
// 生命周期 (可选, 用于协程感知的 LifecycleScope)
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
// 测试依赖
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}
依赖说明:
work-runtime-ktx 内部已集成协程支持,无需额外添加 work-runtime 基础库。kotlinx-coroutines-android 提供 Android 主线程调度器,是 WorkManager 协程任务的必要依赖。
3.5 常见配置错误与解决方案
环境搭建阶段最常遇到以下四类问题,请对照排查:
错误 1:AGP 版本与 Gradle 版本不匹配
报错信息:
解决方案:查阅上文的“版本兼容性矩阵”,确保 AGP 与 Gradle 版本处于同一行。升级 Gradle 可在项目根目录执行:
报错信息:
Android Gradle plugin requires Java 17 to run 或 Gradle version X is not compatible with AGP Y解决方案:查阅上文的“版本兼容性矩阵”,确保 AGP 与 Gradle 版本处于同一行。升级 Gradle 可在项目根目录执行:
./gradlew wrapper --gradle-version=8.5
然后更新项目级 build.gradle 中的 AGP 版本号。
错误 2:Kotlin 版本过低导致 WorkManager 编译失败
报错信息:
根本原因:WorkManager 2.7+ 内部使用 Kotlin 1.5+ 特性,项目 Kotlin 版本低于 1.5 时无法解析字节码。
解决方案:将 Kotlin 插件版本升级至 1.9.22+,并在
报错信息:
Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6根本原因:WorkManager 2.7+ 内部使用 Kotlin 1.5+ 特性,项目 Kotlin 版本低于 1.5 时无法解析字节码。
解决方案:将 Kotlin 插件版本升级至 1.9.22+,并在
kotlinOptions 中设置 jvmTarget = "17"。
错误 3:依赖版本冲突导致运行时异常
报错信息:
原因:项目中多个库依赖了不同版本的协程或 AndroidX 库。
解决方案:在模块级 build.gradle 中强制锁定依赖版本:
报错信息:
Duplicate class 或 java.lang.NoSuchMethodError原因:项目中多个库依赖了不同版本的协程或 AndroidX 库。
解决方案:在模块级 build.gradle 中强制锁定依赖版本:
configurations.all {
resolutionStrategy {
force("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
force("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
}
}
最佳实践:在
gradle.properties 中启用 Gradle 构建缓存与配置缓存,可显著减少依赖解析时间:org.gradle.caching=true
org.gradle.configuration-cache=true
kotlin.code.style=official
android.useAndroidX=true
每次修改依赖后执行一次 File → Invalidate Caches → Invalidate and Restart,可彻底清除版本冲突缓存。
3.6 验证环境配置
完成上述配置后,在终端执行以下命令验证环境是否就绪:
# 检查 JDK 版本
java --version
# 检查 Gradle 版本
./gradlew --version
# 检查依赖是否正常解析
./gradlew :app:dependencies --configuration implementation
若终端输出中无红色 Error 信息,且 :app:dependencies 结果中包含 androidx.work:work-runtime-ktx:2.9.0 与 org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3,则环境搭建成功。