Play Core 库集成配置:Gradle 依赖添加、仓库配置与版本选择
Play Core SplitInstall 是 Google Play 动态功能交付的核心 SDK,负责按需下载、安装、加载和卸载功能模块。本章覆盖从零集成 Play Core 的全流程:Maven 仓库声明、Gradle 依赖规范、版本锁定策略以及常见集成陷阱。所有配置均以 Android Gradle Plugin(AGP)7.x / 8.x 为目标环境。
1. 仓库配置:声明 Google Maven
Google Maven 是 Play Core 库的官方发布仓库。在项目的顶层 settings.gradle(或 build.gradle,视 AGP 版本而定)中添加 repository。
✅ 推荐使用
settings.gradle 统一管理。// settings.gradle (Project 级别)
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// 其他仓库按需添加
}
}
若项目仍使用 buildscript { repositories { ... } } 风格,确保两处均包含 google()。
⚠️ 常见错误:未在
allprojects 或 dependencyResolutionManagement 中声明 Google Maven 会导致 Could not resolve com.google.android.play:core 错误。请优先使用 FAIL_ON_PROJECT_REPOS 模式以强制统一。
2. 添加 Gradle 依赖项
在应用模块的 build.gradle(app)中添加 Play Core SplitInstall 依赖。Android 系统自带 com.google.android.play:core 和拆分后的 play-core-ktx 两个主要工件。
// app/build.gradle
dependencies {
// Java 版本
implementation "com.google.android.play:core:1.10.3"
// Kotlin 扩展(可选,提供协程 + 扩展函数支持)
implementation "com.google.android.play:core-ktx:1.8.1"
// Play Asset Delivery / Play Feature Delivery 也可复用此依赖
}
📘 版本说明:Play Core 从 1.10.0 开始将 SplitInstall API 标记为稳定。1.10.3 是当前推荐的生产版本。若需要使用
SplitInstallManager 的异步 Flow 或协程,必须引入 core-ktx。
3. 版本选择策略
Play Core 版本必须与目标设备的 Google Play 服务及 AGP 兼容。下表列出跨版本的关键兼容节点。
| Play Core 版本 | 最低 AGP 版本 | 最低 API 级别 | 重要变更 |
|---|---|---|---|
| 1.8.x – 1.9.x | 4.2+ | 21 | 旧版 SplitInstallManager API,OnSuccessListener 回调 |
| 1.10.0 – 1.10.3 | 7.0+ | 21 | 引入 SplitInstallStateUpdatedListener 稳定版本;移除 deprecated 方法 |
| 1.12.x (预览) | 8.0+ | 24 | 合并到 com.google.android.play:feature-delivery 新包;需迁移 |
⚠️ 迁移注意:Play Core 1.12+ 已迁移至
com.google.android.play:feature-delivery:2.0+,本课程以 1.10.3 为稳定基线。若开始新项目,建议直接使用 feature-delivery-ktx:2.1.0 API,但本课程后续代码仍基于经典 core:1.10.3 以确保学员能维护现网项目。
4. 验证集成:同步并检查依赖树
配置完成后执行 File → Sync Project with Gradle Files(或命令行 ./gradlew app:dependencies)。运行以下命令确认 Play Core 出现在依赖树中。
./gradlew app:dependencies --configuration releaseRuntimeClasspath | grep play:core
预期输出示例(实际版本号可能不同):
com.google.android.play:core:1.10.3
com.google.android.play:core-ktx:1.8.1
✅ 若未出现,请检查
settings.gradle 中仓库是否添加 google(),或者是否存在全局仓库覆盖规则。5. 集成流程总览
下图展示从仓库声明到依赖可见性的完整集成路径,包含两个关键 Gradle 文件及同步操作。
6. 常见集成错误排查
- Gradle 同步失败:
Could not resolve com.google.android.play:core:1.10.3
检查settings.gradle或build.gradle是否包含google(),以及repositoriesMode是否导致子模块忽略。可临时改为PREFER_SETTINGS测试。 - Dex 重复类冲突
若同时引入core和core-ktx,确认版本号一致(建议使用相同主版本号)。1.10.3 与 1.8.1 兼容,但避免混用 1.9.x 与 1.10.x 的不同子项。 - 混淆规则缺失
若启用 ProGuard/R8,可能需要添加 Play Core 保留规则。默认 SDK 已自带 consumer ProGuard 文件,但自定义混淆时可检查:
-keep class com.google.android.play.core.splitinstall.** { *; }
7. 性能与稳定性建议
- 固定版本号:使用
1.10.3而非1.10.+,防止自动升级引入破坏性变更。 - 按需引入 KTX:仅在使用
SplitInstallManager的协程或 Flow 时才添加core-ktx,否则仅保留core以减少方法数。 - 多模块项目:若存在多个 feature 模块,只需在
app模块中添加依赖,feat 模块通过implementation platform()统一版本。
🔧 生产检查清单
□ 已在
□ 版本号锁定为具体稳定版(如 1.10.3)
□ 执行
□ 确认 minSdk ≥ 21(Play Core 最低要求 API 21)
□ 若使用 Instant App,需额外添加
□ 已在
settings.gradle 中添加 google()□ 版本号锁定为具体稳定版(如 1.10.3)
□ 执行
./gradlew app:dependencies 验证依赖树□ 确认 minSdk ≥ 21(Play Core 最低要求 API 21)
□ 若使用 Instant App,需额外添加
play-core:instant 变体