Firebase配置无效致通信失败及FIS令牌获取失败问题求助
Firebase Installations配置无效导致Messaging获取Token失败的排查方案
错误日志
E/Firebase-Installations:Firebase Installations因配置无效无法与Firebase服务器API通信。请更新Firebase初始化流程,并在初始化时设置有效的Firebase选项(API密钥、项目ID、应用ID)。 E/FirebaseMessaging: Failed to get FIS auth token java.util.concurrent.ExecutionException: com.google.firebase.installations.FirebaseInstallationsException at com.google.android.gms.tasks.Tasks.zza(com.google.android.gms:play-services-tasks@@18.0.2:5) at com.google.android.gms.tasks.Tasks.await(com.google.android.gms:play-services-tasks@@18.0.2:8) at com.google.firebase.messaging.GmsRpc.setDefaultAttributesToBundle(com.google.firebase:firebase-messaging@@23.0.0:10) at com.google.firebase.messaging.GmsRpc.startRpc(com.google.firebase:firebase-messaging@@23.0.0:1) at com.google.firebase.messaging.GmsRpc.getToken(com.google.firebase:firebase-messaging@@23.0.0:1) at com.google.firebase.messaging.FirebaseMessaging.lambda$blockingGetToken$9$com-google-firebase-messaging-FirebaseMessaging(com.google.firebase:firebase-messaging@@23.0.0:1) at com.google.firebase.messaging.FirebaseMessaging$$ExternalSyntheticLambda5.start(Unknown Source:6) at com.google.firebase.messaging.RequestDeduplicator.getOrStartGetTokenRequest(com.google.firebase:firebase-messaging@@23.0.0:6) at com.google.firebase.messaging.FirebaseMessaging.blockingGetToken(com.google.firebase:firebase-messaging@@23.0.0:7) at com.google.firebase.messaging.SyncTask.maybeRefreshToken(com.google.firebase:firebase-messaging@@23.0.0:1) at com.google.firebase.messaging.SyncTask.run(com.google.firebase:firebase-messaging@@23.0.0:10) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:463) at java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@18.1.0:2) at java.lang.Thread.run(Thread.java:1012) Caused by: com.google.firebase.installations.FirebaseInstallationsException at com.google.firebase.installations.FirebaseInstallations.doNetworkCallIfNecessary(FirebaseInstallations.java:417) at com.google.firebase.installations.FirebaseInstallations.lambda$doRegistrationOrRefresh$3$com-google-firebase-installations-FirebaseInstallations(FirebaseInstallations.java:375) at com.google.firebase.installations.FirebaseInstallations$$ExternalSyntheticLambda0.run(Unknown Source:4) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at java.lang.Thread.run(Thread.java:1012)
问题背景
已执行以下操作但问题仍存在:
- 清除应用缓存
- 从Google Cloud Platform更换API密钥
- 更新
google-services.json至最新版本
问题仅出现在特定分支,主分支无此错误。
排查与解决步骤
1. 对比分支间的Firebase配置差异
- 检查特定分支是否存在硬编码覆盖Firebase配置的代码,比如手动设置
API_KEY、PROJECT_ID、APP_ID的逻辑,确认参数值与主分支一致 - 验证
google-services.json文件:对比特定分支与主分支的该文件内容,重点检查api_key、project_id、mobilesdk_app_id字段是否完全匹配,避免文件同步或合并导致的配置缺失 - 核对Gradle依赖版本:检查
app/build.gradle和项目根目录build.gradle中Firebase相关依赖(如firebase-messaging、firebase-installations)的版本,确保与主分支一致,版本不兼容可能引发配置加载异常
2. 验证Firebase初始化有效性
- 在特定分支中添加初始化日志,打印
FirebaseOptions的核心参数(API密钥、项目ID等),确认初始化时加载的是预期的有效值 - 排查多模块冲突:如果特定分支新增了模块,检查是否存在重复初始化Firebase的逻辑,或模块间配置相互覆盖的情况
3. 彻底清理构建缓存
- 执行
./gradlew cleanBuildCache清理Gradle构建缓存,避免旧配置残留 - 依次执行Android Studio的
Build -> Clean Project和Build -> Rebuild Project,确保构建产物完全更新
4. 检查API权限与限制
- 确认新API密钥在Google Cloud Console中已启用Firebase Installations API和Cloud Messaging API
- 检查API密钥的应用限制:确认包名、SHA-1/SHA-256指纹与特定分支的配置一致,若分支修改了包名,需同步更新密钥的限制规则
5. 分支代码全量对比
- 直接对比特定分支与主分支的所有Firebase相关文件(初始化代码、配置文件、Gradle脚本等),定位分支独有的修改点,这是排查分支专属问题最直接的方式
内容的提问来源于stack exchange,提问作者Syed Ghulam Murtaza
相关产品推荐
相关产品推荐

