2. 环境准备与依赖引入:Gradle配置、所需库版本、最小SDK要求
在开始自定义 LifecycleOwner 之前,必须先搭建正确的构建环境。Android Architecture Components 的 Lifecycle 库支持 AndroidX,最低 API 级别为 14(Ice Cream Sandwich),但建议将 minSdkVersion 设为 21 以上以获得更好的 Lifecycle 行为稳定性。
2.1 最小SDK与编译SDK要求
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| compileSdk | 34 或最新稳定版 | 确保 Lifecycle 2.8+ 的 API 可用 |
| minSdk | 21 | 最低支持;若坚持 14 以上需额外测试 |
| targetSdk | 34 | 与 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-ktx | 2.5.0 | 2.8.7 |
| lifecycle-common | 2.5.0 | 2.8.7 |
| lifecycle-compiler | 2.5.0 | 2.8.7 |
| lifecycle-process | 2.5.0 | 2.8.7 |
| kotlin-stdlib | 1.8.0 | 1.9.24 |
| androidx.core | 1.10.0 | 1.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 依赖引入后的验证步骤
- 执行 Sync Now 确保所有 artifact 下载成功。
- 在
MainActivity中临时添加以下导入,验证编译通过:
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry - 运行
./gradlew :app:dependencies --configuration releaseRuntimeClasspath检查是否有版本冲突。
常见版本冲突: lifecycle-compiler 2.8.x 需要 kotlin 1.9.20+。若项目中既有 KAPT 又有 KSP,请确保只保留一种注解处理器,否则会出现
Duplicate class 错误。
2.6 环境准备流程
下面的 SVG 图展示了从项目创建到依赖验证的完整步骤,以及各组件之间的层级关系。
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 { ... } 且编译器不报错时,本章配置完成。