Проблема Flutter Firebase и Android – невозможно инициализировать. Невозможно найти google-services.json с выполненными Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема Flutter Firebase и Android – невозможно инициализировать. Невозможно найти google-services.json с выполненными

Сообщение Anonymous »

Я разработчик Flutter и последние два дня пытаюсь заставить свое приложение работать на Android. Это довольно большое приложение с множеством различных функций (в основном карты Google и Firebase), которые прекрасно работают на iOS. Однако теперь, когда я пытаюсь заставить работать часть Android, мне кажется, что я вообще не могу запустить приложение из-за какой-то проблемы с Firebase.
FlutterFire отвечает за большинство пакетов Firebase, и они только что выпустили пару обновлений. Я потратил довольно много времени на рефакторинг своего проекта, чтобы он соответствовал большинству критических изменений. Проблема, с которой я столкнулся, как-то связана с новым обновлением. К сожалению, ошибка, которую я получаю, не приближает меня к решению. Я думаю, это как-то связано с тем, что часть Android не может найти google-services.json. Как я уже говорил, на iOS все работает нормально. Поэтому мой логический вывод заключается в том, что с кодом Flutter тоже все в порядке. Кажется, все проблемы Google/StackOverflow/FlutterFire сбивают меня с толку и приводят к проблемам, на которые у меня нет ответов.
TL;DR При компиляции в Android приложение Flutter не делает этого. Не могу начать, потому что Firebase не может найти мой google-services.json. Вот трассировка стека:

Код: Выделить всё

E/flutter (15568): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: [core/not-initialized] Firebase has not been correctly initialized.  Have you added the "google-services.json" file to the project?
E/flutter (15568):
E/flutter (15568):     View the Android Installation documentation for more information: https://firebaseextended.github.io/flutterfire/docs/installation/android
E/flutter (15568):
E/flutter (15568): #0      MethodChannelFirebase.initializeApp (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:86:9)
E/flutter (15568): 
E/flutter (15568): #1      Firebase.initializeApp (package:firebase_core/src/firebase.dart:43:25)
E/flutter (15568): #2      mainCommon (package:userapp/main/main_common.dart:31:18)
E/flutter (15568): #3      main (package:userapp/main/main_dev.dart:6:9)
E/flutter (15568): #4      _runMainZoned.. (dart:ui/hooks.dart:233:25)
E/flutter (15568): #5      _rootRun (dart:async/zone.dart:1190:13)
E/flutter (15568): #6      _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (15568): #7      _runZoned (dart:async/zone.dart:1630:10)
E/flutter (15568): #8      runZonedGuarded (dart:async/zone.dart:1618:12)
E/flutter (15568): #9      _runMainZoned. (dart:ui/hooks.dart:225:5)
E/flutter (15568): #10     _startIsolate.  (dart:isolate-patch/isolate_patch.dart:301:19)
E/flutter (15568): #11     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
E/flutter (15568):
На данный момент я сделал следующее:
  • Выполнил инструкции по переносу на https://firebase.flutter.dev/docs/migration/.
  • Поместил мой google-services.json в android/app, а также в android/app /src/main, android/app/src/profile и android/app/src/debug (я знаю, что последние три не являются обязательными, но я видел, как они упоминались пару раз).
    < li>Убедитесь, что я вызываю WidgetsFlutterBinding.ensureInitialized(), прежде чем вызывать await Firebase.initalizeApp().
  • Убедитесь, что я вызываю < strong>Firebase.initializeApp(), прежде чем я вызову runApp().
  • Пересобрал проект с использованием различных версий плагинов внутри моей pubspec .yaml и/или оба моих application и app build.gradle.
  • Много раз удерживал себя от того, чтобы выбросить старый добрый ноутбук из окна.
Даже когда я удаляю весь свой код и оставляю в своем приложении только в следующем коде я все равно получаю ту же ошибку.

Код: Выделить всё

WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
Мое app/build.gradle имеет следующую конфигурацию:

Код: Выделить всё

compileSdkVersion 29

sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}

lintOptions {
disable 'InvalidPackage'
}

defaultConfig {
applicationId "stackoverflow.example.package"
minSdkVersion 21
targetSdkVersion 29
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
И следующие зависимости:

Код: Выделить всё

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.firebase:firebase-messaging:20.2.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.android.support:multidex:2.0.1'
implementation 'com.google.firebase:firebase-perf:19.0.6'
}
Я применяю следующие плагины:

Код: Выделить всё

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'com.google.firebase.crashlytics'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
Мой android/build.gradle должен иметь следующие зависимости (я обновил их до конкретных и последних версий, безуспешно пытаясь решить эту проблему):< /p>

Код: Выделить всё

dependencies {
classpath 'com.android.tools.build:gradle:3.5.4'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61"
classpath 'com.google.gms:google-services:4.3.3'
classpath 'com.google.firebase:perf-plugin:1.3.1'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.1'
}
Я также несколько раз обновлял свой google-services.json, загружая последнюю версию из Firebase, но это тоже не помогло. Мне странно не видеть никого с такой проблемой. Я надеюсь, что любой из вас сможет понять, что происходит. Заранее большое спасибо.
Обновление: Я удалил и добавил пару зависимостей в build.gradle (хотя в руководстве по миграции сказано удалить их всех, это не всегда работает) и вернул проект Android обратно на Java вместо Kotlin. Это позволило лучше перенастроить некоторые сообщения Firebase. Кажется, это что-то изменило, но все равно дает мне какую-то ошибку инициализации Firebase.
[ОШИБКА: flutter/lib/ui/ui_dart_state.cc(166)] Необработанное исключение: MissingPluginException (реализация для метода Firebase#initializeCore не найдена) плагины канала.flutter.io/firebase_core)
Я не усну, пока не исправлю это ♞
Обновление 2: я закончил создайте новый проект, тщательно копируя Firebase и несколько других пакетов из исходного проекта. После этого я скопировал каждый файл в lib/android вместе с соответствующими конфигурациями в build.gradle и манифестах. Для iOS я просто скопировал весь проект, и все сразу заработало.
Кажется, теперь все работает в «новом» проекте. Все еще совершенно не уверен, кто виноват, поскольку я скопировал точный проект в новый. В любом случае надеюсь, что это поможет любому с этой проблемой. Я потратил на это пять дней 😄, желаю вам не того же, кем бы вы ни были.
Ответ Мухаммеда ниже, кажется, тоже помог многим людям, попробуйте мое решение в качестве в крайнем случае.

Подробнее здесь: https://stackoverflow.com/questions/638 ... -google-se
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»