第3章 项目依赖配置:添加DataStore Gradle依赖、版本选择、兼容性说明
迁移实操的第一步是正确添加DataStore的Gradle依赖。依赖的版本选择直接关系到后续迁移中的稳定性与API可用性,兼容性说明则帮助你在多种AndroidX库版本之间避免冲突。
3.1 DataStore的两种实现
AndroidX DataStore提供两种序列化后端,对应不同的依赖坐标和业务场景:
| 类型 | Gradle依赖坐标 | 适用场景 | 数据存储格式 |
|---|---|---|---|
| Preferences DataStore | androidx.datastore:datastore-preferences:1.1.1 | 键值对存储,类似SharedPreferences | XML,自动序列化 |
| Proto DataStore | androidx.datastore:datastore:1.1.1 + protobuf插件 | 强类型对象存储,需定义proto schema | Protocol Buffers二进制 |
推荐优先级:对于迁移旧SharedPreferences的场景,优先使用
datastore-preferences,它支持增量迁移且无需额外编译任务。若业务已使用proto文件或需要类型安全,则选择Proto DataStore。
3.2 添加依赖与版本选择
在项目级build.gradle.kts的dependencies块中添加如下配置(以Preferences DataStore为例):
dependencies {
// DataStore Preferences (稳定版)
implementation("androidx.datastore:datastore-preferences:1.1.1")
// 如果使用AndroidX Core KTX,需保持一致版本
implementation("androidx.core:core-ktx:1.12.0")
// Kotlin协程 (必须与DataStore兼容)
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1")
}
版本选择原则:
- DataStore 1.1.x系列适用于绝大多数AndroidX兼容库(core-ktx 1.9+,lifecycle 2.6+)。
- 避免直接使用alpha或beta版本,优先采用最新的稳定发布版(可在Google Maven官网或androidx.dev查询)。
- DataStore内部依赖Kotlin协程,建议同时锁定
kotlinx-coroutines-android版本 ≥1.7.3,否则可能出现异步API运行时异常。
3.3 兼容性矩阵与minSdk说明
| DataStore版本 | 最低Android API | 兼容的AndroidX Core | 推荐的Kotlin协程版本 |
|---|---|---|---|
| 1.1.1 | API 14+ | core-ktx 1.9+ | 1.7.3 – 1.9.x |
| 1.0.0 | API 14+ | core-ktx 1.7+ | 1.6.4 – 1.8.x |
| 1.0.0-alpha/RC | API 14+ | core-ktx 1.6+ | 1.5.2+ |
关键警告:不要混淆
datastore(Proto DataStore)与datastore-preferences的依赖坐标。如果误引入datastore:1.1.1并调用PreferenceDataStoreFactory,编译时会提示缺少序列化库,导致构建失败。
3.4 DataStore集成决策流程
3.5 常见依赖冲突排查
添加依赖后若出现DuplicateClass或NoSuchMethodError,通常是由于多个库依赖了不同版本的Kotlin协程或androidx-core。执行以下命令查看依赖树:
./gradlew app:dependencies --configuration releaseRuntimeClasspath
在输出中检索kotlinx-coroutines和datastore,如有冲突版本,在build.gradle.kts中使用force或constraints统一版本:
configurations.all {
resolutionStrategy {
force("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1")
force("androidx.datastore:datastore-preferences:1.1.1")
}
}
已验证的稳定组合:DataStore 1.1.1 + core-ktx 1.12.0 + kotlinx-coroutines-android 1.8.1 + AGP 8.2.2,在minSdk 21的Gradle 8.5环境下编译通过且运行时无异常。