Firebase Phone Auth报错17499:开启混淆后短信验证码请求失败
Firebase Phone Auth 17499错误(开启混淆/资源压缩时)解决方法
这个错误是因为开启minifyEnabled和shrinkResources后,ProGuard/R8混淆工具移除或混淆了Firebase Auth内部依赖的Gson序列化类,导致JsonResponse无法实例化com.google.android.gms.internal.firebase-auth-api.zzaan,进而触发17499状态码错误。
以下是针对性的解决步骤:
添加Firebase Auth专属ProGuard规则
在项目的proguard-rules.pro文件中追加以下规则,确保Firebase Auth内部类不被混淆或移除:# 保留Firebase Auth内部核心类 -keep class com.google.android.gms.internal.firebase-auth-api.** { *; } -keep class com.google.firebase.auth.** { *; } # 保留Gson序列化相关类与属性,避免序列化失败 -keepattributes Signature, InnerClasses, EnclosingMethod -keep class * implements com.google.gson.TypeAdapterFactory -keep class * implements com.google.gson.JsonSerializer -keep class * implements com.google.gson.JsonDeserializer配置资源压缩白名单
若开启shrinkResources,创建或修改res/raw/keep.xml文件,确保Firebase相关资源不被误删:<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@raw/firebase_*" />更新Firebase Auth依赖版本
检查并升级build.gradle(Module级别)中的Firebase Auth依赖到最新稳定版,避免旧版本的混淆兼容性问题:implementation 'com.google.firebase:firebase-auth:22.3.0' // 替换为当前最新版本添加R8兼容规则(可选)
若使用默认的R8混淆工具,可追加以下规则避免警告:-dontwarn com.google.android.gms.internal.firebase-auth-api.**
完成以上配置后,重新构建开启混淆的debug或release包,即可验证错误是否修复。
内容的提问来源于stack exchange,提问作者bool
相关产品推荐
相关产品推荐

