2. 环境准备与依赖引入:Gradle配置、所需库版本、最小SDK要求

在开始自定义 LifecycleOwner 之前,必须先搭建正确的构建环境。Android Architecture Components 的 Lifecycle 库支持 AndroidX,最低 API 级别为 14(Ice Cream Sandwich),但建议将 minSdkVersion 设为 21 以上以获得更好的 Lifecycle 行为稳定性。

2.1 最小SDK与编译SDK要求

配置项推荐值说明
compileSdk34 或最新稳定版确保 Lifecycle 2.8+ 的 API 可用
minSdk21最低支持;若坚持 14 以上需额外测试
targetSdk34与 compileSdk 保持一致

2.2 Gradle 依赖声明

在模块的 build.gradle.kts(或 build.gradle)中添加以下核心依赖:

// build.gradle.kts (Module: app)
dependencies {
    // Lifecycle 核心库(含 LifecycleOwner、LiveData、ViewModel 基类)
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.7")
    // ProcessLifecycleOwner(可选,用于监听整个进程生命周期)
    implementation("androidx.lifecycle:lifecycle-process:2.8.7")
    // 注解处理器(如果使用 LifecycleObserver 注解,Java 项目需要)
    annotationProcessor("androidx.lifecycle:lifecycle-compiler:2.8.7")
    // KSP 版本(Kotlin 项目推荐)
    // ksp("androidx.lifecycle:lifecycle-compiler:2.8.7")
}
版本选择建议: 2.8.x 系列兼容 AndroidX 1.0+,并支持 Kotlin 1.9+。若项目仍使用旧版 Android 支持库,请迁移到 AndroidX 后再引入。

2.3 所需库版本对照表

库名称最小版本推荐版本(2025.03)
lifecycle-runtime-ktx2.5.02.8.7
lifecycle-common2.5.02.8.7
lifecycle-compiler2.5.02.8.7
lifecycle-process2.5.02.8.7
kotlin-stdlib1.8.01.9.24
androidx.core1.10.01.15.0

2.4 配置 Java 编译选项(可选但推荐)

如果你的自定义 LifecycleOwner 会使用 DefaultLifecycleObserver 或 Java 8+ 接口,请在 android { } 块中启用 Java 8 编译:

android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = "17"
    }
}

2.5 依赖引入后的验证步骤

  1. 执行 Sync Now 确保所有 artifact 下载成功。
  2. 在 MainActivity 中临时添加以下导入,验证编译通过:
    import androidx.lifecycle.LifecycleOwner
    import androidx.lifecycle.LifecycleRegistry
  3. 运行 ./gradlew :app:dependencies --configuration releaseRuntimeClasspath 检查是否有版本冲突。
常见版本冲突: lifecycle-compiler 2.8.x 需要 kotlin 1.9.20+。若项目中既有 KAPT 又有 KSP,请确保只保留一种注解处理器,否则会出现 Duplicate class 错误。

2.6 环境准备流程

下面的 SVG 图展示了从项目创建到依赖验证的完整步骤,以及各组件之间的层级关系。

环境准备与依赖流程 ① 模块 build.gradle.kts ② compileSdk=34 / minSdk=21 ③ lifecycle-runtime-ktx ④ Sync Now / 编译 ⑤ 验证 import 可用 ⑥ 依赖树检查冲突 说明: • lifecycle-runtime-ktx 依赖 lifecycle-common(自动包含)。 • 若使用 Java 1.8 默认接口,必须设置 compileOptions 为 Java 8+。

2.7 常见问题与调试

  • Missing artifact:确保 repositories { google() } 在顶级 build.gradle 中存在。
  • Duplicate class:同时引入了 KAPT 和 KSP 版本的 lifecycle-compiler 会导致冲突,移除不需要的一种。
  • LifecycleRegistry 构造方法找不到:检查是否导入了 androidx.lifecycle:lifecycle-runtime 而非旧版 android.arch.lifecycle。
环境就绪标志: 当你能在任意类中写出 class MyOwner : LifecycleOwner { ... } 且编译器不报错时,本章配置完成。

2.8 下一步只需编码