3. Google Play Core 库引入:build.gradle 依赖配置与版本管理
Google Play Core 是 Android 官方提供的库,用于实现 Play 核心功能,包括 Split Install(动态功能模块下载)、In-app Updates(应用内更新)、In-app Reviews(应用内评价)等。本课程专注于 Split Install 能力,因此需要通过 build.gradle 正确引入该库,并进行合理的版本管理。
3.1 依赖配置:常规引入方式
在模块级 build.gradle 文件的 dependencies 块中添加以下依赖:
dependencies {
// Google Play Core 库(推荐使用最新稳定版)
implementation 'com.google.android.play:core:1.10.3'
// 如果使用 Kotlin 协程或 LiveData 响应式 API,可额外引入
implementation 'com.google.android.play:core-ktx:1.9.1'
}
对于 Split Install 功能,核心库 play-core 已经包含 SplitInstallManager 及其相关 API。play-core-ktx 是 Kotlin 扩展库,提供协程和 Flow 封装,可简化异步任务处理。
3.2 版本管理策略
| 版本号 | 说明 | 建议 |
|---|---|---|
| 1.10.3 | 稳定版,支持 Split Install 1.5+,包含缺失模块检测、延迟安装等增强 | 首选版本 |
| 1.9.1 | 较老稳定版,兼容性更广,但缺少部分新 API | 若需兼容旧 Google Play 商店可用 |
| 1.12.0+ | 预览版或实验版,可能包含重大变更 | 仅测试环境使用,生产慎选 |
📌 版本对齐关键点:
- Google Play Core 库的 API 与 Play 商店客户端版本有关。建议始终使用 最新稳定版(查看 Google 开发者文档 获取实时版本)。
play-core-ktx的版本应与play-core主版本对应,避免 API 不兼容。- 如果项目中使用
splitcompat进行基础模块化,需额外添加对应依赖,但 Split Install 只需要 Core 库。
3.3 启用 Split Install 功能
仅添加依赖还不够,还需要在 build.gradle 中明确启用 Split Install 支持:
android {
defaultConfig {
...
// 启用动态功能模块下载
dynamicFeatures = [":feature_home", ":feature_profile"]
}
}
// 配置 Play 商店分发
play {
// 如果使用 Play 开发者 API 自动上传,可配置
// track = "internal"
}
// 根项目 gradle.properties 文件(可选,用于统一版本)
playCoreVersion = "1.10.3"
// 然后在各模块的 build.gradle 中引用
implementation "com.google.android.play:core:$playCoreVersion"
💡 统一版本管理建议: 在项目根目录的
gradle.properties 中定义版本变量,或在 ext 块中声明,避免各模块依赖版本不一致。例如:
ext {
playCoreVersion = '1.10.3'
playCoreKtxVersion = '1.9.1'
}
3.4 Android App Bundles 与版本适配
Split Install 只对 Android App Bundle(AAB)格式生效。因此 build.gradle 中的签名配置必须使用 AAB 打包:
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
若项目仍使用 APK 打包,Split Install 将无法工作,需迁移至 AAB。
3.5 依赖引入流程:从 build.gradle 到运行时加载
3.6 常见错误与排查
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
java.lang.NoClassDefFoundError: com.google.android.play.core.splitinstall.SplitInstallManager | Core 库未正确引入或 ProGuard 规则遗漏 | 检查 build.gradle 依赖;添加 ProGuard 保留规则 -keep class com.google.android.play.core.** { *; } |
Missing Split Install capability | 设备上 Play 商店版本过低或 APK 格式未使用 AAB | 确保使用 AAB 打包;检查 Play 商店最低版本要求(建议 8.4+) |
API 不兼容异常 | Core 库版本与 Kotlin 扩展版本不匹配 | 统一版本号,使用同一大版本下的 play-core-ktx |
3.7 性能与构建优化
🚀 优化建议:
- 使用
implementation而非api引入 Play Core 库,避免传递依赖污染。 - 如果项目不使用 Kotlin,不要添加
play-core-ktx,减少无用的扩展类。 - 在调试阶段可临时使用
debugImplementation或testImplementation避免 release 包引入不必要功能。 - 利用 Gradle 缓存:同一版本库在不同模块间共享,无需重复下载。
完成上述配置后,项目即可在运行时通过 SplitInstallManager 请求下载并安装动态功能模块。下一环节将深入 SplitInstallAsyncTask 的异步任务封装机制。