Добавление Cloud Firestore и Firebase в проект Flutter (Android)

Это будет довольно длинный вопрос, поэтому я добавлю TL; DR в конце.

Уже несколько дней я пытаюсь найти способ заставить свою настройку работать, но безуспешно. Теперь, чтобы сделать его полным и помочь другим, я буду записывать свои шаги здесь:

Действия по воспроизведению

  1. Создайте новый проект Flutter (компилируется и запускается без предупреждений)
  2. Создайте новый проект консоли Firebase
  3. Следуйте эти инструкции, чтобы добавить Firebase в android (также включено ниже в случае изменения версии).
  4. Добавьте Cloud Firestore в проект в pubspec.yaml
  5. Встречайте эту ошибку:

    • Что пошло не так: Execution failed for task ':cloud_firestore:compileDebugJavaWithJavac'.

Инструкции Firebase (на данный момент)

  1. Установите Google Repository (текущая версия 58) (больше не требуется согласно Эта проблема, но сделано для проверки).
  2. Скопируйте имя пакета из android/app/src/main/AndroidManifest.xml. В моем случае это был com.omnisciamus.fire. Используйте его для создания нового приложения для Android в проекте Firebase вместе с ключом отладки.
  3. Сбросьте созданный google-services.json в android/app
  4. Измените android/build.gradle и android/app/build.gradle. Я изменил это на использование последних версий (модификации включены ниже).
  5. На этом этапе я перезапускаю компиляцию, чтобы увидеть, не возникли ли уже какие-либо проблемы, и у нас есть 3 из этих предупреждений, которые, скорее всего, связаны с плагином служб Google, а не чем-то, в чем я могу что-либо изменить: registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection)
  6. Теперь мы добавляем зависимости в pubspec.yaml, также включенный ниже. Теперь есть несколько возможных версий, которые мы можем использовать, но сначала я попробовал последние версии (включив ^ перед версиями).

Градлы

Изменения в android/build.gradle:

buildscript {
        repositories {
            google()
            jcenter()
        }

        dependencies {
            classpath 'com.android.tools.build:gradle:3.1.0' // upgraded from 3.0.1
            classpath 'com.google.gms:google-services:3.2.0' // added & upgraded from 3.1.1
        }
    }

А потом у нас есть android/app/build.gradle:

//bottom of file
apply plugin: 'com.google.gms.google-services'

Pubspec

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

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.0
  firebase_analytics: 0.3.0
  cloud_firestore: 0.3.1

Детали установки

Для получения дополнительных сведений я добавил вывод команды flutter doctor -v:

[√] Flutter (Channel beta, v0.1.5, on Microsoft Windows [Version 10.0.16299.309], locale en-GB)
    • Flutter version 0.1.5 at C:\Developer\Flutter\flutter
    • Framework revision 3ea4d06340 (5 weeks ago), 2018-02-22 11:12:39 -0800
    • Engine revision ead227f118
    • Dart version 2.0.0-dev.28.0.flutter-0b4f01f759

[√] Android toolchain - develop for Android devices (Android SDK 27.0.0)
    • Android SDK at C:\Android
    • Android NDK at C:\Android\ndk-bundle
    • Platform android-P, build-tools 27.0.0
    • ANDROID_HOME = C:\Android
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)

[√] Android Studio (version 3.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)

[√] IntelliJ IDEA Ultimate Edition (version 2017.3)
    • Flutter plugin version 22.2.2
    • Dart plugin version 173.4548.30

[√] VS Code (version 1.21.1)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Dart Code extension version 2.10.0

[√] Connected devices (1 available)
    • Android SDK built for x86 • emulator-5554 • android-x86 • Android 6.0 (API 23) (emulator)

• No issues found!

Ключ отладки

Поскольку это может стать учебным пособием, я включу простую команду для получения ключа отладки (в Windows): cd %JAVA_HOME%\bin & keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

TL; DR

Cloud_firestore вылетает с версией 0.3.x, как это исправить?

3
0
2 495
4

Ответы 4

Обсуждая это с несколькими соавторами, я обнаружил, что одна из них нашла работающую установку: изменение версии cloud_firestore на версию ниже 0.3.0, например, 0.2.9. Согласно этот недавно опубликованный выпуск, проблема в том, что «стабильная» версия flutter не имеет определенных функций, которые использует cloud_firestore, что вызывает ошибки, которые вы видите при компиляции. Я обновлю вопрос через некоторое время, чтобы отразить этот ответ, если потребуется.

Так сработало ли это решение? Я спрашиваю, потому что это решение не на 100% похоже на инструкции, которые я вижу в Интернете.

IrishGringo 07.04.2018 17:18

Это сработало для меня, а также для некоторых других разработчиков, но, возможно, некоторые другие вещи к настоящему времени изменились (возможно, в инструкциях)

Pluriscient 08.04.2018 20:04

Чтобы плагины Firebase работали со Swift, вам необходимо использовать более новые версии: но у меня также есть проблемы с Android. Я также пробовал переключить канал флаттера с бета-версии на dev.

dependencies:
  flutter:
    sdk: flutter
  cloud_firestore: "^0.4.0"


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.0

dev_dependencies:
 flutter_test:
    sdk: flutter
  image_picker: 0.4.1
  #google_sign_in: '>=2.1.0 '
  google_sign_in: '3.0.0'
  #firebase_analytics: '>=0.2.3'
  firebase_auth: '>=0.4.5'
  #firebase_auth: '>=0.5.3'        #not working on android
  #firebase_database: '>=0.3.5'   #works on android
  firebase_database: '0.4.2'      #works on android
  #firebase_storage: '>=0.1.4'    #not Working on android
  #firebase_storage: '0.2.0'       #not working on android

Я не могу проверить в данный момент (у меня нет Mac под рукой), но я проверю его на andoid, если вспомню завтра. С другой стороны, этот конкретный «вопрос» касался добавления хранилища огня, которое вы, похоже, не включили

Pluriscient 08.04.2018 20:14

Я решил свои текущие проблемы с Cloud_Firestore:

  • Изменение канала флаттера с бета на владелец. Просто запускаем в терминале flutter channel master. Как предлагается здесь Cloud Firestore 0.3.2 - сбой при выполнении задачи ...
  • работал с зависимостями флаттера: cloud_firestore: "^0.4.0" даже cloud_firestore: "^0.3.2".

Надеюсь, это поможет. Я часами пытался понять, почему я не могу скомпилировать приложение flutter с помощью cloud_firestore. Я знал, что проблема связана с версиями SDK flutter, но я не хотел переходить на альфа-версию. Но решение оказалось простым - использовать мастер-канал. Хотя пока не уверен, какие еще вопросы могут возникнуть в ближайшее время. Однако теперь я могу с радостью начать тестирование с облачным хранилищем огня. ;)

Да, я столкнулся с тем же решением, пытаясь исправить это (я тоже потратил дней), но хотел сначала найти решение, при котором мне, возможно, не пришлось ломать остальную часть флаттера, используя нестабильную версию

Pluriscient 11.04.2018 00:06

У меня также были похожие проблемы при использовании firebase во флаттере. Я решил это, используя эти зависимости в моем файле android / build.gradle и удалив любые другие существующие зависимости.

classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'com.google.gms:google-services:3.2.1'  

и использовал эту версию для firestore и google в pubspec.yaml

cloud_firestore: 0.7.3

И если у вас есть проблемы, связанные с версией, с любым другим продуктом Firebase, обратитесь к этому ссылка на сайт

Другие вопросы по теме