每次我将应用程序的 Firebase 依赖项更新为比 2020 年 2 月 27 日更新更新的任何内容时,我都会在运行应用程序时看到此异常:
04-29 18:21:58.170 3314 3541 E Firebase-Installations: Firebase Installations can not communicate with Firebase server APIs due to invalid configuration. Please update your Firebase initialization process and set valid Firebase options (API key, Project ID, Application ID) when initializing Firebase.
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: Failed to get FIS auth token
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: java.util.concurrent.ExecutionException: com.google.firebase.installations.FirebaseInstallationsException
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at com.google.android.gms.tasks.Tasks.zzb(Unknown Source:61)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at com.google.android.gms.tasks.Tasks.await(Unknown Source:23)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at com.google.firebase.iid.zzt.zzb(com.google.firebase:firebase-iid@@20.1.6:54)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at com.google.firebase.iid.zzt.zza(com.google.firebase:firebase-iid@@20.1.6:72)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at com.google.firebase.iid.zzs.run(Unknown Source:12)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@17.1.1:6)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at java.lang.Thread.run(Thread.java:764)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: Caused by: com.google.firebase.installations.FirebaseInstallationsException
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at com.google.firebase.installations.FirebaseInstallations.doNetworkCall(com.google.firebase:firebase-installations@@16.2.2:350)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at com.google.firebase.installations.FirebaseInstallations.lambda$doRegistrationInternal$0(com.google.firebase:firebase-installations@@16.2.2:323)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at com.google.firebase.installations.FirebaseInstallations$$Lambda$5.run(Unknown Source:4)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
04-29 18:21:58.177 3314 3543 E FirebaseInstanceId: ... 1 more
我已经阅读了几个相关的问题并尝试了以下所有方法:
- 我验证了我的 API 密钥在 Google Cloud Platform 中没有任何限制(SHA-1 或 API 限制)。
- 我验证了 Firebase 提供的 google-services.json 与我的项目中包含的匹配。
- 我验证了 google-services.json 文件中的 API 密钥、项目 ID 和应用程序 ID 是否正确。
- 我验证了我正在测试的所有设备(具有不同 API 版本和物理设备的模拟器的混合)都具有 Play 商店和 Play 服务,并已更新到最新版本。
- 我验证了 APK 是使用正确的密钥签名的 - 用于调试构建的调试密钥和用于发布构建的应用签名密钥。
- 我已验证 Firebase 在我的应用中设置正确。
以下是项目 build.gradle 的相关部分:
buildscript {
ext.kotlin_version = '1.3.72'
repositories {
google()
maven { url 'https://maven.fabric.io/public' }
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.3'
classpath 'com.google.gms:google-services:4.3.3'
classpath 'io.fabric.tools:gradle:1.28.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
allprojects {
repositories {
google()
mavenCentral()
jcenter()
}
}
}
以及应用程序的 build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'io.fabric'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 23
targetSdkVersion 29
// ...
}
signingConfigs {
release {
// ...
}
}
buildTypes {
debug
release {
signingConfig signingConfigs.release
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
implementation 'com.google.firebase:firebase-analytics:17.4.0'
implementation 'com.google.firebase:firebase-config:19.1.4'
implementation 'com.google.firebase:firebase-messaging:20.1.6'
implementation fileTree(dir: 'libs', include: ['PushIOManager-6.44.aar'])
// etc...
}
我省略了捆绑包、风味、其他依赖项等,但希望这已经足够了。我的 Application 类的 onCreate 方法中确实有这个:
// Initialize Fabric with Crashlytics
Fabric.with(this, new Crashlytics());
// Initialize Firebase
FirebaseApp.initializeApp(this);
我把它们拿出来是因为我相信它们不再需要了。无论如何,它没有任何区别。我已经多次查看 Firebase 文档,但无法弄清楚我缺少什么。
编辑:我最初遗漏的依赖项之一是 Responsys。一旦我从我的应用程序中删除它,我就不再看到错误了。我正在等待他们的支持团队的回复。