迁移Play Core库至新版后应用内更新启动崩溃求助
解决Play Core迁移后
NoSuchMethodError崩溃问题 问题根源
崩溃日志显示AppUpdateManager类找不到getAppUpdateInfo()方法,本质是新旧版本依赖冲突:旧版com.google.android.play:core:1.10.3与新版模块化依赖app-update-ktx:2.1.0同时存在,导致运行时加载了不兼容的类文件。
修复步骤
1. 彻底移除旧版Core依赖
检查项目的Module级别build.gradle,确保已删除旧的com.google.android.play:core:1.10.3依赖。若第三方库间接引入了旧版Core,需手动排除:
implementation('com.google.android.play:app-update-ktx:2.1.0') { exclude group: 'com.google.android.play', module: 'core' }
可通过执行./gradlew app:dependencies命令查看依赖树,确认旧版Core已完全清除。
2. 清理重建项目
- 执行
Build > Clean Project清除缓存文件 - 执行
Build > Rebuild Project重新编译生成新的Dex文件 - 卸载设备上的旧应用后重新安装,避免残留的旧代码影响
3. 验证方法调用兼容性
虽然官方声称无需修改代码,但确认Kotlin代码中的调用逻辑符合新版规范:
val appUpdateManager = AppUpdateManagerFactory.create(this) appUpdateManager.appUpdateInfo.addOnSuccessListener { info -> // 处理应用更新逻辑 }
KTX版本提供了appUpdateInfo扩展属性,同时兼容旧的getAppUpdateInfo()方法,只要依赖无冲突即可正常运行。
4. 检查依赖完整性
若项目还使用Play Core的其他功能(如应用内评论),需单独引入对应模块;仅应用内更新场景下,app-update-ktx:2.1.0已足够。
内容的提问来源于stack exchange,提问作者Orton
相关产品推荐
相关产品推荐

