FirebaseInstallationsException на последнюю версию - PullRequest
1 голос
/ 30 апреля 2020

Каждый раз, когда я обновляю зависимости моего приложения 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

Я прочитал несколько связанных вопросов и попробовал все следующее:

  1. Я подтвердил, что мой ключ API не имеет ограничений (SHA-1 или ограничения API) в Google Cloud Platform.
  2. Я подтвердил Google-сервисы. json, предоставленный Firebase, совпадает с указанным в моем проекте.
  3. Я проверил ключ API, идентификатор проекта и идентификатор приложения в google-сервисах. json файл правильный.
  4. Я подтвердил, что все устройства, на которых я тестирую (смесь эмуляторов с различными версиями API и физическими устройствами), имеют Play Store и Play Services и обновлены до последних версий.
  5. Я подтвердил, что APK является подписан с правильным ключом - ключ отладки для сборок отладки и ключ подписи моего приложения для сборок релиза.
  6. Я подтвердил, что 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. Как только я удалил его из приложения, я перестал видеть ошибки. Я жду ответа от их команды поддержки.

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Службам установки Firebase (новый компонент, используемый в Firebase Cloud Messaging) требуются допустимые параметры комбинации Firebase (в частности, ключ API, идентификатор проекта, идентификатор приложения). Похоже, ваше приложение получило недопустимую комбинацию.

Если вы инициализируете приложение из google-services.json, загрузите последнюю версию этого файла для приложения из консоли Firebase и повторно включить его в свой проект. Проверка содержимого этого файла вручную подвержена ошибкам, поэтому я просто создаю резервную копию текущего файла и заменяю его на тот, который вы скачали.

Если это не решит проблему, обратиться в службу поддержки Firebase с google-services.json и другой информацией для персональной помощи в устранении неполадок.

0 голосов
/ 02 мая 2020

Фон

К сожалению, интерфейс Google может неправильно идентифицировать ваш ключ API как недействительный. Это может произойти, если ваш ключ API не использовался в течение длительного времени.

FirebaseInstallations - это новая инфраструктура для служб Firebase, которая использует ключ API, которым вы инициализируете Firebase. Если вы недавно обновили свои Firebase SDK, FirebaseInstallations, возможно, начал использовать ваш ключ API, который раньше не использовался.


Средство устранения

Если у вас есть проблемы с ключом API, вы можно создать новый ключ API в облачной консоли:

  • go для Google Cloud Console
  • выберите соответствующий проект (т.е. проект, который вы используете для вашего приложения)
  • откройте меню и от go до APIs & ServicesCredentials
  • вверху страницы нажмите + CREATE CREDENTIALSAPI key
  • замените ключ API в вашем приложении на только что созданный ключ API

google-services. json

Если вы используете файл конфигурации google-services.json из консоли Firebase сначала необходимо удалить или ограничить ключ API, используемый в текущем google-services.json, чтобы настроить файл конфигурации обновления Firebase и использовать новый ключ API.

  • Определите ключ API в файле конфигурации google-services.json.
  • Убедитесь, что ключ API создан Получите ошибочные запросы, проверив их использование в соответствии со страницей метрик API установок Firebase . Столбец Usage with this service вашего ключа API должен показывать число больше 0.
  • Удалите этот ключ API, щелкнув по символу bin, или добавьте Application restrictions к этому ключу API, щелкнув по символу карандаша. !! Предупреждение !! Не удаляйте ключ API, который требуется существующим установкам ваших приложений для других служб Firebase, таких как Firebase Auth или Realtime-Database.

Подождите пару минут для серверов Google, чтобы обновить. Следующая загрузка вашего конфигурационного файла google-service.json должна содержать новый ключ API.


Ссылки

Другие соответствующие ссылки, касающиеся ключей API и API установок Firebase :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...