В моем приложении у меня есть два продукта. Оба они работали нормально. Внезапно я начал получать ошибку 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, он начинает работать (приложение не зависает).
Я пробовал следующие тесты:
- Я изменяю идентификатор пакета аромата разработки, добавляя только одну букву: «com.myapp.developmentX». Я также внес соответствующие изменения в файл google-services.json. Затем начинается развитие вкуса. Но, конечно, службы Firebase не работают, потому что новый идентификатор приложения не настроен в консоли Firebase.
В файле манифеста я удаляю MyFirebaseMessagingService и MyFirebaseMessagingService и MyFirebaseInstanceIDService. Затем приложение все еще зависает при запуске, но ошибка в logcat немного меняется:
ANR в com.myapp.development
PID: 683
Причина: выполнение службы com.myapp.development / com.google.firebase.iid.FirebaseInstanceIdService
Я проверил старую ветку git и попытался запустить ее, но проблема все еще там.
- Я также пытался: удалить приложение и установить снова. Чистый проект. Удалить каталоги сборки. Перезапустите тестовое устройство. Используйте эмулятор 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
Но это не помогло.