【簡単】FlutterアプリのFireBase接続手順!!

今回は、FlutterアプリでFireBase が使えるように、手順をご紹介します。
基本的には、公式の以下手順をもとに進めています。

<公式>Flutter アプリに Firebase を追加する

ただ私の場合、躓いたことも多かったのでその対処方法も含めご紹介します。

ご紹介
《公開中アプリのご紹介》
vLIST
vLIST
スマートなチェックリストアプリ
Google Playでダウンロード

環境

私の環境は以下です。

  • Windows11
  • VSCode
  • Flutter 3.22.3
  • Google Pixel [Android](デバッグ用スマホ)

準備するもの

この手順を実施するためには、以下が必要です。

この時点で、新たにFireBase のプロジェクトを準備しておく必要はありません。
既にプロジェクトを作成されている場合は、それを使うこともできます。

Firebase CLI のインストール

Firebase CLI とは、Firebaseに接続するためのCLI(Command Line Interface)です。
FireBase にアクセスするためには、Firebase CLI が必要です。

以下公式の手順を参考にインストールしてください。
<公式>Firebase CLI リファレンス

私はVSCodeのターミナルで実行したかったので、npmでのインストールを行いました。
参考にnpmでのインストール手順をご紹介します。

Node.jsのインストール

既にインストール済みであれば省略してください。
以下からNode.jsのインストーラーをダウンロードし、Node.jsをインストールしてください。
https://nodejs.org/en

Firebase CLI のインストール

以下コマンドをターミナルで実行してください。

npm install -g firebase-tools

これで、Firebase CLI の準備は完了です。

FireBase へのログイン

ターミナルで以下コマンドを実行し、FireBase にログインします。

firebase login

以下の様に、Googleのアカウント画面が開くので、管理するアカウントを選択してください。

FlutterFire CLI のインストール

FlutterFire CLIとは、FlutterアプリをFirebaseに接続するためのFlutter プラグインのセットです。
ターミナルで以下コマンドを実行し、FireBase にログインします。

dart pub global activate flutterfire_cli

FlutterアプリのFirebase接続設定

ターミナルで以下コマンドを実行し、FireBase接続設定を行います。

flutterfire configure

エラー:flutterfire: command not found

上記コマンドを実行すると、「flutterfire: command not found(’flutterfire’ は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。)」と
エラーが発生する場合があります。

システム環境変数を設定することで、このエラーを対処できます。

システム環境変数のPathに以下を追加してください。

C:\Users\{UserName}\AppData\Local\Pub\Cache\bin

エラー:FirebaseCommandException

上記を対応すると、新たに「FirebaseCommandException: An error occured on the Firebase CLI when attempting to run COMMAND: firebase projects:list –json」というエラーが発生する場合があります。

こちらはログインが上手くいっていないため、
ターミナルで以下コマンドを実行し、再度ログインしてください。

firebase login --reauth

プロジェクトの選択

「flutterfire configure」を実行すると、以下のようにどのプロジェクト選択するか聞かれるため、
既存のプロジェクトを選ぶか「create a new project」を選択して新たなプロジェクトを作成します。

プロジェクト選択後、プラットフォームを選択すると、
FireBaseに接続するための設定がFlutterアプリプロジェクトに反映されます。

firebase_coreのインストール

pubspec.yamlにfirebase_coreを追加します。(バージョンは任意)

dependencies:
  firebase_core: ^3.2.0

main.dartの設定

main.dartにFireBaseと接続するための、初期処理を記述します。

Future<void> main() async {
  // firebase
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );

実行してみるとエラーが発生…

私の場合、上記設定後にデバックモードで実行してみたところ以下のエラーが発生しました。
「com.google.gms:google-services」のクラスパスが見つからないというエラーです。

Could not find method classpath() for arguments [com.google.gms:google-services:4.3.15]
 on root project 'android' of type org.gradle.api.Project.

対処方法

以下3ファイルを修正します。

  • android\build.gradle
  • android\settings.gradle
  • android\app\build.gradle

android\build.gradle

「buildscript」の部分を削除します。

- buildscript {
-     ext.kotlin_version = '1.7.10'
-     repositories {
-         google()
-         mavenCentral()
-     }
-     dependencies {
-         // START: FlutterFire Configuration
-         classpath 'com.google.gms:google-services:4.3.15'
-         // END: FlutterFire Configuration
-         classpath 'com.android.tools.build:gradle:7.3.0'
-         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-     }
- }

 allprojects {
     repositories {
         google()
         mavenCentral()
     }
 }

android\settings.gradle

「plugins」に以下の通り「com.google.gms.google-services」を追加します。(バージョンは任意)

 plugins {
     id "dev.flutter.flutter-plugin-loader" version '1.0.0'
     id "com.android.application" version '7.3.0' apply false
     id "org.jetbrains.kotlin.android" version '1.7.10' apply false
+    id "com.google.gms.google-services" version '4.3.15' apply false
 }

android\app\build.gradle

以下の通り、”flutterfire configure”のコマンド実行時に、自動で追加された
「apply plugin: ‘com.google.gms.google-services’」を削除し、
以下の通り「id “com.google.gms.google-services”」を追加します。

 plugins {
     id "com.android.application"
-    // START: FlutterFire Configuration\
-    apply plugin: 'com.google.gms.google-services'
+    id "com.google.gms.google-services"
-    // END: FlutterFire Configuration
     id "org.jetbrains.kotlin.android"
     id "dev.flutter.flutter-gradle-plugin"
 }

まだまだエラーがでる…

再度デバッグ実行すると、今度は以下のメッセージが表示されました。
どうやらminSdkVersionのバージョンがだめ見たいです。

│ android {                                                                                     │
│   defaultConfig {                                                                             │
│     minSdkVersion 23                                                                          │
│   }                                                                                           │
│ }                                                                                             │
│                                                                                               │
│ Following this change, your app will not be available to users running Android SDKs below 23. │
│ Consider searching for a version of this plugin that supports these lower versions of the     │
│ Android SDK instead.                                                                          │
│ For more information, see:                                                                    │
│ https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration          │
└───────────────────────────────────────────────────────────────────────────────────────────────┘
Error: Gradle task assembleDebug failed with exit code 1

対策方法1

android\build.gradleに以下記載があるため、以下のように修正します。

 defaultConfig {
-        minSdkVersion flutter.minSdkVersion
+        minSdkVersion 23
 }

対策方法2

もしくは、Flutter JDKの以下ファイルに記載のminSdkVersionのデフォルト値を変更します。
“…\flutter\packages\flutter_tools\gradle\src\main\groovy\flutter.groovy”

 class FlutterExtension {

     /** Sets the compileSdkVersion used by default in Flutter app projects. */
     public final int compileSdkVersion = 34

     /** Sets the minSdkVersion used by default in Flutter app projects. */
-    public  final int minSdkVersion = 19
+    public  final int minSdkVersion = 23

今後作成するアプリもFireBaseへアクセスする可能性があったため、
私はこちらの方法で対応しました。

デバッグができることを確認!

再々度、デバッグ実行を行ってみると、無事実行できました!

Launching lib\main.dart on Pixel X in debug mode...
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8

√ Built build\app\outputs\flutter-apk\app-debug.apk
Connecting to VM Service at ws://127.0.0.x:xxxx/vv-oYScA6OI=/ws
タイトルとURLをコピーしました