You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Phone OTP在Android即时应用中因Android Keystore崩溃

问题背景

当前Firebase Phone OTP在发送手机验证码前,会通过Play Integrity API验证应用:

  • 模拟器运行时,会在浏览器启动Recaptcha流程
  • 物理设备上以普通应用运行时,可通过Play Integrity API自动验证
  • 但以Android即时应用运行时会崩溃

崩溃堆栈跟踪

java.lang.RuntimeException: Unable to resume activity {com.example.myapp/com.google.firebase.auth.internal.RecaptchaActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'int android.security.keystore.IKeystoreService.exist(java.lang.String, int)' on a null object reference
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4657)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4690)
    at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2267)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loop(Looper.java:237)
    at android.app.ActivityThread.main(ActivityThread.java:8167)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'int android.security.keystore.IKeystoreService.exist(java.lang.String, int)' on a null object reference
    at android.security.KeyStore.contains(KeyStore.java:426)
    at android.security.keystore.AndroidKeyStoreSpi.engineContainsAlias(AndroidKeyStoreSpi.java:1038)
    at java.security.KeyStore.containsAlias(KeyStore.java:1293)
    at com.google.android.gms.internal.firebase-auth-api.zzjt.zzd(com.google.firebase:firebase-auth@@22.0.0:9)
    at com.google.android.gms.internal.firebase-auth-api.zzjt.zzc(com.google.firebase:firebase-auth@@22.0.0:2)
    at com.google.android.gms.internal.firebase-auth-api.zzjp.zzj(com.google.firebase:firebase-auth@@22.0.0:4)
    at com.google.android.gms.internal.firebase-auth-api.zzjp.zzg(com.google.firebase:firebase-auth@@22.0.0:16)
    at com.google.firebase.auth.internal.zzk.<init>(com.google.firebase:firebase-auth@@22.0.0:6)
    at com.google.firebase.auth.internal.zzk.zza(com.google.firebase:firebase-auth@@22.0.0:2)
    at com.google.firebase.auth.internal.RecaptchaActivity.zzb(com.google.firebase:firebase-auth@@22.0.0:9)
    at com.google.android.gms.internal.firebase-auth-api.zzaai.<init>(com.google.firebase:firebase-auth@@22.0.0:14)
    at com.google.firebase.auth.internal.RecaptchaActivity.onResume(com.google.firebase:firebase-auth@@22.0.0:47)
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1454)
    at android.app.Activity.performResume(Activity.java:8111)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4647)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4690) 
    at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52) 
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2267) 
    at android.os.Handler.dispatchMessage(Handler.java:107) 
    at android.os.Looper.loop(Looper.java:237) 
    at android.app.ActivityThread.main(ActivityThread.java:8167) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100) 

已知同类问题在Stack Overflow存在,目前Google暂未修复Android即时应用中Android Keystore的相关兼容问题,现寻求以下方向的解决方案:

  • 能否绕过Firebase Phone OTP对Android Keystore的依赖?
  • 有无开发者已成功在Android即时应用中正常使用Android Keystore?
  • 欢迎提供未被广泛尝试的新思路。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:07:55