Android ANR в MyFirebaseInstanceIDService только в одном продукте - PullRequest
0 голосов
/ 05 сентября 2018

В моем приложении у меня есть два продукта. Оба они работали нормально. Внезапно я начал получать ошибку ANR при попытке запустить приложение, и приложение зависает при запуске. Ошибка в Logcat:

ANR в com.myapp.development PID: 7937 Причина: выполнение службы com.myapp.development / com.myapp.development.service.MyFirebaseInstanceIDService

Метод MyFirebaseInstanceIDService.onTokenRefresh никогда не вызывается. Приложение зависает перед выполнением любого из моих собственных кодов.

Ароматизатор производства все еще работает отлично.

Все в консоли Firebase настроено правильно. Приложение находится в магазине Play, и оба вкуса работали.

productFlavors {
        production {
            applicationId 'com.myapp'
            dimension "default"
        }
        development {
            applicationId 'com.myapp.development'
            dimension "default"
        }
    }

Как видите, единственное различие между этими двумя разновидностями - это идентификатор приложения. И если я изменю идентификатор приложения в варианте DevelopMnet, он начинает работать (приложение не зависает).

Я пробовал следующие тесты:

  1. Я изменяю идентификатор пакета аромата разработки, добавляя только одну букву: «com.myapp.developmentX». Я также внес соответствующие изменения в файл google-services.json. Затем начинается развитие вкуса. Но, конечно, службы Firebase не работают, потому что новый идентификатор приложения не настроен в консоли Firebase.
  2. В файле манифеста я удаляю MyFirebaseMessagingService и MyFirebaseMessagingService и MyFirebaseInstanceIDService. Затем приложение все еще зависает при запуске, но ошибка в logcat немного меняется: ANR в com.myapp.development PID: 683 Причина: выполнение службы com.myapp.development / com.google.firebase.iid.FirebaseInstanceIdService

  3. Я проверил старую ветку git и попытался запустить ее, но проблема все еще там.

  4. Я также пытался: удалить приложение и установить снова. Чистый проект. Удалить каталоги сборки. Перезапустите тестовое устройство. Используйте эмулятор Android. Перезагрузите компьютер. Перезапустите Android Studio. Обновите Android Studio до последней версии 3.1.4 для Mac. Но ни один из них не помог.

Похоже, что проблема связана с идентификатором приложения и Firebase, но я не могу найти что. У кого-нибудь есть идеи?

Обновление после комментариев от Акулы и Себасира.

В консоли Firebase у меня один проект, и для него определены два приложения - по одному для каждого варианта. В этом случае нет необходимости в нескольких google-services.json, по одному для каждого варианта. Файл одинаков для всех разновидностей и может быть размещен в корневом каталоге: приложение/ Google-services.json

Структура файла выглядит следующим образом:

{
  "project_info": {...},
  "client": [...],
}

Как видите, существует множество клиентов. Все идентификаторы приложений (все разновидности) определены в этом массиве. Вот почему, если я загружаю из Firebase файл google-services.json для каждого приложения, они все одинаковы.

Во всяком случае, я пытался поместить разные файлы google-services.json для каждого варианта:

app/src/
    flavor1/google-services.json
    flavor2/google-services.json

Но это не помогло.

1 Ответ

0 голосов
/ 07 сентября 2018

Я столкнулся с точно такой же проблемой, и конфигурация моего приложения была точно такой же, как и у вас.

Проблема была вызвана тем, что последний SDK Facebook, который я использовал в своем коде, вызывает сбой Firebase перед запуском приложения, поэтому приложение переходит в ANR.

Я установил свою версию Facebook SDK как 4.35.0, и это решило проблему.

Попробуйте и дайте мне знать, было ли это полезно.

...