Android 12上Firebase Auth登录崩溃PendingIntent标志错误修复方案
这个崩溃的核心原因是firebase-ui-auth:8.0.0默认拉取的传递依赖版本过低:其绑定的firebase-auth20.x版本、play-services-auth19.x版本均未适配Android 12(API 31+)对PendingIntent的标记强制要求,崩溃点发生在依赖内部,修改自身业务代码的PendingIntent逻辑无法解决问题。
按优先级尝试以下方案:
强制覆盖底层依赖版本(最快生效,无需升级firebase-ui版本)
在模块级build.gradle中保留原有firebase-ui-auth依赖的同时,手动引入适配了Android 12的高版本核心依赖,覆盖默认的低版本传递依赖:implementation "com.firebaseui:firebase-ui-auth:8.0.0" // 强制指定适配Android 12的底层依赖版本 implementation "com.google.firebase:firebase-auth:21.0.1" implementation "com.google.android.gms:play-services-auth:20.2.0" implementation "com.google.android.gms:play-services-base:18.0.1"如果你使用Firebase BoM管理依赖版本,请确保BoM版本号不低于29.0.0,该版本及以上的BoM默认绑定的firebase-auth版本已经完成Android 12适配。
若覆盖依赖后出现版本兼容冲突,直接升级firebase-ui-auth到已修复适配问题的版本:
implementation "com.firebaseui:firebase-ui-auth:8.0.2"8.0.1及以上版本的firebase-ui-auth已经将底层依赖升级到符合Android 12要求的版本,不会再触发该PendingIntent崩溃。
如果以上操作后仍存在依赖版本被旧库拉低的情况,添加全局依赖解析强制规则,确保所有相关依赖使用适配版本:
android { // 你的其他现有配置 } configurations.all { resolutionStrategy { force 'com.google.firebase:firebase-auth:21.0.1' force 'com.google.android.gms:play-services-auth:20.2.0' force 'com.google.android.gms:play-services-base:18.0.1' } }修改完成后执行Gradle sync,清理构建缓存后重新运行即可。
如果确认是SDK本身未修复的新问题,可以通过两个官方渠道反馈:
- 在Firebase官方开源SDK的GitHub仓库提交Issue,附上完整崩溃日志、依赖配置、最小复现步骤,SDK维护团队会直接跟进
- 在Google Issue Tracker的Firebase Authentication分类下提交反馈,该渠道的问题会进入官方Bug处理队列,附可复现Demo的问题优先级会更高
注:该PendingIntent适配问题在2021年Android 12正式发布时就已经在Firebase核心Auth库中完成修复,不需要等待新的补丁版本,只要修正依赖版本即可解决。
内容的提问来源于stack exchange,提问作者Haris

