升级至API31后遇com.google.android.gms.internal.zzbej找不到错误
解决API31升级后Firebase运行时找不到com.google.android.gms.internal.zzbej类的问题
核心问题分析
这个报错本质是升级API31后,Firebase/Google Play服务的依赖版本不统一,旧版内部类被遗留但新版库已移除该类,导致运行时出现类查找冲突。
具体解决方案
强制统一依赖版本,正确使用Firebase BOM
确保所有Firebase组件都通过BOM管理,不要单独指定版本,彻底避免版本不一致问题。示例配置:dependencies { // 引入最新版Firebase BOM(版本号可参考官方文档更新) implementation platform('com.google.firebase:firebase-bom:32.7.0') // Firebase组件无需指定版本,由BOM统一控制 implementation 'com.google.firebase:firebase-messaging' implementation 'com.google.firebase:firebase-analytics' // Google Play服务组件保持版本统一 implementation 'com.google.android.gms:play-services-base:18.2.0' }彻底清理构建缓存
清除旧构建残留,避免缓存干扰:- 执行命令:
./gradlew clean - 删除项目根目录的
.gradle文件夹和模块下的build文件夹 - 重启Android Studio后重新同步项目
- 执行命令:
排查第三方库的依赖冲突
用./gradlew app:dependencies生成依赖树,查找是否有第三方库依赖了旧版Google Play服务。如果有,通过exclude排除旧版依赖:implementation('你的第三方库坐标') { exclude group: 'com.google.android.gms' }确认Manifest配置正确性
确保Firebase相关组件(如MessagingService)的android:exported属性设置正确,同时intent-filter配置完整:<service android:name=".MyFirebaseMessagingService" android:exported="true"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>临时禁用混淆优化(仅用于排查)
如果以上方法无效,可在proguard-rules.pro中添加规则避免该类被混淆移除,但这是临时方案,优先解决依赖版本问题:-keep class com.google.android.gms.internal.zzbej { *; } -keep class com.google.android.gms.internal.** { *; }
内容的提问来源于stack exchange,提问作者Drze wo
相关产品推荐
相关产品推荐

