第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 与协程,需按以下三步完成依赖声明:

  1. 配置项目级 build.gradle — 声明 AGP 插件版本与 Kotlin 插件版本,统一管理仓库地址。
  2. 配置模块级 build.gradle — 添加 work-runtime-ktx 与 kotlinx-coroutines-android 依赖,并设置 SDK 版本。
  3. 同步 Gradle — 点击 Sync Now 下载依赖,并检查版本兼容性错误。
WorkManager与协程依赖配置层级架构 WorkManager 与协程依赖配置层级架构 JDK 17+ Java 编译环境 AGP 8.2+ Android Gradle Plugin Kotlin 1.9+ 语言 & 编译器 模块级 build.gradle.kts compileSdk / minSdk / targetSdk WorkManager 2.9.0 androidx.work:work-runtime-ktx Kotlin Coroutines 1.7.3 kotlinx-coroutines-android 说明:所有依赖通过模块级 build.gradle 统一管理,AGP、Kotlin 与 JDK 版本必须相互兼容。

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 版本不匹配
报错信息: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 编译失败
报错信息: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:依赖版本冲突导致运行时异常
报错信息: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,则环境搭建成功。