升级至API 34时Google Play Core库版本冲突问题求助
问题分析
错误提示的重复类com.google.android.play.core.listener.StateUpdatedListener同时存在于旧版com.google.android.play:core:1.6.1和新版com.google.android.play:core-common:2.0.2中,说明项目存在间接依赖引入了旧版Play Core库,升级时引入的新版拆分后core-common库与之产生版本冲突。
解决步骤
1. 定位间接依赖来源
执行./gradlew dependencies无输出,大概率是未指定具体模块(多模块项目场景),需补充模块名执行:
# 将app替换为你的主模块名称,如module-main ./gradlew app:dependencies
若仍无有效输出,执行带扫描参数的命令生成详细依赖报告:
./gradlew dependencies --scan
打开报告后搜索com.google.android.play:core:1.6.1,即可定位到引入旧版库的第三方依赖。
2. 排除旧版依赖或强制统一版本
方案一:精准排除特定依赖
找到引入旧版core库的第三方依赖后,在对应implementation中添加排除规则:
implementation '第三方库坐标' { exclude group: 'com.google.android.play', module: 'core' }
方案二:全局强制使用新版
若不想逐个排查,直接在模块build.gradle中添加版本强制策略,让所有依赖统一使用指定新版Play Core相关库:
configurations.all { resolutionStrategy { // 可替换为最新稳定版 force 'com.google.android.play:core:2.0.2' force 'com.google.android.play:core-common:2.0.2' } }
3. 清理冗余依赖
你的依赖配置中有重复声明的库(如两次com.google.android.material:material:1.12.0、两次androidx.appcompat:appcompat:1.7.0),建议删除重复项,简化依赖结构。
4. API34适配额外建议
当前使用的android.arch.lifecycle:extensions:1.1.1是旧版非AndroidX架构组件,建议升级为AndroidX版本(原库已废弃,推荐使用具体细分组件):
// 替换旧版lifecycle-extensions implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.7.0'
内容的提问来源于stack exchange,提问作者midhunhk

