Неудачная инициализация FirebaseApp в приложениях Android Instant
В настоящее время я работаю над существующим приложением для Android, чтобы создать версию приложений Instant.
Моя Android Studio теперь разделена на несколько модулей:
- модуль бизнес-объекта (который является библиотекой)
- базовый модуль
- moduleA -feature- модуль
- модуль приложения (который является модулем телефона / планшета)
- мгновенный модуль (который является модулем мгновенных приложений)
Мой мгновенный модуль приложения можно скомпилировать и запустить на телефоне / планшете, но каждый раз он вылетает из-за проблем с Firebase. У меня есть следующее сообщение в logcat:
I / FirebaseInitProvider: инициализация FirebaseApp не удалась
Согласно документации, библиотека Firebase совместима с Instant Apps, но я почти уверен, что не перемещаю файл google-services.json в нужное место в моем проекте...
Вот что я сделал:
Я определил следующие зависимости classpath в файле build.gradle проекта Android Studio: classpath 'com.google.gms:google-services:3.1.1'
Я поместил файл google-services.json в базу моего модуля (потому что это запрашивается в документации)
Теперь, если я попытаюсь применить плагин (применить плагин: 'com.google.gms.google-services') в файле build.gradle базового модуля, я не смогу скомпилировать. У меня есть следующее сообщение:
Ошибка: не удалось выполнить задачу ': base: processGooglePlayProductionDebugFeatureGoogleServices'.
> Не найдено подходящего клиента для имени пакета 'com.mycompany.myapp.base'
Фактически, имя пакета, определенное в файле google-services.json, используется приложением (поскольку согласно документации базовая библиотека не может иметь того же имени пакета, что и установленное приложение для Android).
Я также попытался применить плагин в файлах build.gradle установленного приложения и в модуле мгновенных приложений, оставив файл google-services.json в базовом модуле. Приложение скомпилировано, но у меня есть журнал: "Неудачная инициализация FirebaseApp".
Поэтому я попытался переместить файл google-services.json в модуль мгновенного приложения, но у меня все еще есть журнал: "Инициализация FirebaseApp не удалась"
Я также попытался принудительно инициализировать вызов статического метода initializeApp из класса FirebaseApp, но журнал сохраняется.
Я не могу найти пример реализации в Интернете. На самом деле репозиторий Sample Google не использует файл google-services.json.
Заранее спасибо за вашу помощь!
Редактировать: Здесь зависимости моих модулей:
Зависимости моего базового -feature- модуля:
implementation project(':businessobject')
feature project(':moduleA')
application project(':app')
Зависимости моего модуля A -feature- модуля:
api project(':base')
api project(':businessobject')
Зависимости моего модуля приложения (который является модулем телефона / планшета):
implementation (project(':base'))
implementation (project(':businessobject'))
implementation (project(':moduleA'))
Зависимости моего мгновенного модуля (который является модулем мгновенных приложений):
implementation project(':base')
implementation project(':businessobject')
implementation project(':moduleA')
1 ответ
потому что согласно документации базовая библиотека не может иметь того же имени пакета, что и установленное приложение для Android.
Я думаю, что документация немного устарела. Каждый " функциональный " модуль должен использовать свое имя пакета, потому что это то, что используется для генерации имени класса R. На самом деле, нет причин, по которым нельзя использовать базовую функцию с тем же именем пакета, что и само приложение.
Вроде как google-services
Плагин необходимо обновить, чтобы плагин "Feature" использовал идентификатор приложения, а не имя, указанное в AndroidManifest.xml
(который будет перезаписан позже, чтобы совпадать с идентификатором приложения).
tl; dr --- изменяя имя пакета " base " на " com.mycompany.myapp ", все должно заработать.