Каждый раз, когда я обновляю зависимости моего приложения Firebase до чего-то более позднего, чем обновление от 27 февраля 2020 года, я начинаю видеть это исключение при запуске своего приложения:
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 не имеет ограничений (SHA-1 или ограничения API) в Google Cloud Platform.
- Я подтвердил Google-сервисы. json, предоставленный Firebase, совпадает с указанным в моем проекте.
- Я проверил ключ API, идентификатор проекта и идентификатор приложения в google-сервисах. json файл правильный.
- Я подтвердил, что все устройства, на которых я тестирую (смесь эмуляторов с различными версиями API и физическими устройствами), имеют Play Store и Play Services и обновлены до последних версий.
- Я подтвердил, что 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...
}
Я пропустил комплекты, разновидности, другие зависимости, и др c. но, надеюсь, этого достаточно. У меня это было в методе onCreate моего класса Application:
// Initialize Fabric with Crashlytics
Fabric.with(this, new Crashlytics());
// Initialize Firebase
FirebaseApp.initializeApp(this);
Я забрал их, потому что, по-моему, они больше не нужны. Несмотря на это, это не имеет значения. Я просмотрел документацию по Firebase несколько раз и не могу понять, что мне не хватает.
Редактировать: одна из зависимостей, которую я изначально пропустил, была Responsys. Как только я удалил его из приложения, я перестал видеть ошибки. Я жду ответа от их команды поддержки.