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 文件及同步操作。

Play Core 集成流程 settings.gradle dependencyResolutionManagement 包含 google() app/build.gradle implementation "core:1.10.3" implementation "core-ktx:1.8.1" Gradle Sync File → Sync Project ./gradlew app:dependencies 验证依赖树 com.google.android.play:core:1.10.3 com.google.android.play:core-ktx:1.8.1 ❌ 错误: Could not resolve 原因: 缺少 google() 仓库 / 版本冲突 ❌ 错误: API deprecated 原因: 使用旧版 API 但依赖较新版本

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() 统一版本。
🔧 生产检查清单
□ 已在 settings.gradle 中添加 google()
□ 版本号锁定为具体稳定版(如 1.10.3)
□ 执行 ./gradlew app:dependencies 验证依赖树
□ 确认 minSdk ≥ 21(Play Core 最低要求 API 21)
□ 若使用 Instant App,需额外添加 play-core:instant 变体