You need to enable JavaScript to run this app. Firebase手机认证异常:Android10设备调用verifyPhoneNumber时崩溃
优惠活动
大模型
产品
解决方案
定价
更多

Firebase手机认证异常:Android10设备调用verifyPhoneNumber时崩溃

崩溃根因定位
  • 从异常堆栈可明确,空指针发生在firebase-auth 20.0.1版本的内部逻辑:RecaptchaActivity在onResume阶段调用未初始化的zzdk实例的zza()方法。
  • 触发条件集中在Android 10及更低版本的设备上:系统因内存压力回收应用后台进程后,用户重新切回应用时,RecaptchaActivity被异常重建,但暂存于内存中的认证流程中间状态未被重新初始化,最终触发空指针导致应用闪退。
  • 该问题属于20.0.1版本的官方已知缺陷,Android 11以上系统因Activity重建逻辑调整,不会触发该路径的异常。
排查方向
  • 核对项目依赖版本:在app模块的构建配置中,确认是否硬编码依赖firebase-auth:20.0.1,未跟随Firebase BOM的自动版本管理升级。
  • 验证复现场景:将应用切到后台停留1分钟以上,让系统触发进程回收后再回到手机号验证流程,确认是否稳定复现崩溃。
  • 检查Manifest配置:确认com.google.firebase.auth.internal.RecaptchaActivity是否被添加了自定义的跨进程android:process配置,导致上下文传递中断触发初始化失败。
解决方案
  • 首选修复:升级依赖到修复版本。将firebase-auth版本升级到21.0.1及以上,或直接将Firebase BOM版本升级到29.0.0及以上。该版本已对RecaptchaActivity的重建流程增加空值判断兜底,彻底解决该空指针问题。
  • 临时兼容:如果暂时无法升级依赖,可在Manifest中为RecaptchaActivity增加配置,减少系统因配置变更触发Activity异常重建的概率:
    android:configChanges="orientation|screenSize|keyboardHidden|uiMode|navigation"
    
  • 路径规避:开启Firebase Play Integrity设备验证模式,跳过Recaptcha WebView的启动流程,从根源上避开该崩溃的触发路径。
  • 兜底防护:在全局Activity生命周期回调中,对RecaptchaActivity的resume阶段做异常捕获,避免空指针导致应用直接闪退。

内容的提问来源于stack exchange,提问作者Programmer007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 13:36:09