Flutter の Android アプリに FirebaseAnalytics を導入する方法です。
Flutter 3.19 で作成したプロジェクトで素直に設定しても動作しなかったため、バージョン関連で苦戦しました。
動作が確認できたバージョンで記載しておきます。 環境に合わせて適宜バージョンを変更してください。
- Flutter 3.19.5
- firebase_core: ^2.28.0
- firebase_analytics: ^10.10.0
Firebase の事前準備
公式を参考にアプリに Firebase を追加して初期化します。
Flutter アプリに Firebase を追加する
google.com- firebase のプロジェクト作成する
- firebase プロジェクトにアプリを追加する
- firebase プロジェクトのアナリティクスを有効にする
パッケージインストール
Get started with Google Analytics(Google アナリティクスの利用を始める) | Google Analytics for Firebase
google.comfirebase_analytics
パッケージをインストールします。
flutter pub add firebase_analytics
flutter のmain.dart
にfirebase_analytics
を import し、動作確認用にアプリオープンを記録するコードを追記しておきます。
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
import 'package:firebase_analytics/firebase_analytics.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
FirebaseAnalytics.instance.logAppOpen(); // <-- 追記
runApp(const MainApp());
}
Firebase SDK の設定
Firebase のプロジェクトのアプリの設定 SDK 設定手順に従い、
android/app/google-services.json
を配置します。
android/settings.gradle
のplugins
に
id("com.google.gms.google-services") version "4.4.1" apply false
を追記します。
また、com.android.application
と org.jetbrains.kotlin.android
のバージョンも変更しています。 (詳細は後半のつまづいたところを参照ください)
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.3.0" apply false // <-- 7.3.0 -> 8.3.0
id "org.jetbrains.kotlin.android" version "1.9.23" apply false // <-- 1.7.10 -> 1.9.23
id "com.google.gms.google-services" version "4.4.1" apply false // <-- 追記
}
android/app/build.gradle
plugins
にid 'com.google.gms.google-services'
を追記します。
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
id 'com.google.gms.google-services' // <-- 追記
}
また同ファイルのdependencies
に
dependencies {
implementation platform('com.google.firebase:firebase-bom:32.8.0') // <-- 追記
implementation 'com.google.firebase:firebase-analytics' // <-- 追記
}
gradle のバージョンを変更による影響があった箇所です。
・・・
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
ndkVersion もエラーが出たためメッセージ通りにバージョン変更しました。
android {
・・・
ndkVersion "25.1.8937393"
}
つまづいたところ
Missing google_app_id
Android で flutter run でアプリを起動すると以下のエラーが出ました。
E/FA (11749): Missing google_app_id. Firebase Analytics disabled. See https://goo.gl/NAOOOI
公式と Firebase アプリの SDK 設定手順に従って設定を確認しました。
Android 向け Firebase について理解する | Firebase for Android
google.complugins {
id "com.google.gms.google-services" version "4.4.1" apply false // <--
}
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
id "com.google.gms.google-services" // <--
}
・・・
dependencies {
implementation platform('com.google.firebase:firebase-bom:32.8.0') // <--
implementation 'com.google.firebase:firebase-analytics' // <--
}
kotlin のバージョンエラー
設定すると、Kotlin Gradle plugin を更新してねというエラーが出ました。
Execution failed for task ':app:compileDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
・・・
Running Gradle task 'assembleDebug'... 34.5s
┌─ Flutter Fix ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [!] Your project requires a newer version of the Kotlin Gradle plugin. │
│ Find the latest version on https://kotlinlang.org/docs/releases.html#release-details, then update /Users/***/***/android/build.gradle: │
│ ext.kotlin_version = '<latest-version>' │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Error: Gradle task assembleDebug failed with exit code 1
エラーの URL にアクセスして最新のバージョンを確認し、
/android/settings.gradle
のorg.jetbrains.kotlin.android
のバージョンを変更しました。
plugins {
・・・
id "org.jetbrains.kotlin.android" version "1.9.23" apply false // <-- バージョンを変更 1.7.10 -> 1.9.23
}
com.google.gms.google-services のバージョン変更
この時点で起動してもまだMissing google_app_id
がでていたため以下サイトを参考にcom.google.gms.google-services
のバージョンを 4.3.14 に変更しました。
Plugin com.google.gms.google-services version 4.4.0 apply: false was not found in any of the following sources
My error message: Build file 'C:\Users\kcebu\StudioProjects\fitness_app\android\build.gradle' line: 16 Plugin [id: 'com.google.gms.google-services', version: '4.4.0', apply: false] was not found i...stackoverflow.complugins {
id 'com.google.gms.google-services' version '4.3.14' apply false // <-- バージョンを変更 4.4.1 -> 4.3.14
この状態で動作確認したところ、Missing google_app_id
のエラーが解消し、Analytics のイベントが Firebase に送信されることが確認できました。
ただ、--release ビルド時に関連パッケージの以下のようなエラーが複数でていた為、追加で対応しました。
Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.6.0.
Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.6.0. の対応
Android Studio を起動すると Gradle のバージョンが古いという警告が出ていたため、Upgrade Gradle をクリックしてバージョンを変更しました。
変更された箇所は以下の通りです。
plugins {
id "com.android.application" version "8.3.0" apply false // <-- 7.3.0 -> 8.3.0
・・・
}
・・・
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
ndkVersion バージョンを変更
この時点でビルドすると以下のエラーがでたため、android/app/build.gradle
の ndkVersion バージョンを変更しました。
One or more plugins require a higher Android NDK version.
Fix this issue by adding the following to /Users/***/***/android/app/build.gradle:
android {
ndkVersion "25.1.8937393"
...
}
android {
・・・
ndkVersion "25.1.8937393"
}
この状態でビルドするとエラーが解消され、Analytics のイベントが Firebase に送信されることも確認できました。
また、最初にバージョンを下げた id 'com.google.gms.google-services'を'4.3.14'から '4.4.1' に戻しても問題なく動作しました。
plugins {
id 'com.google.gms.google-services' version '4.4.1' apply false // '4.3.14' -> '4.4.1'
まとめ
以上、Flutter 3.19 で FirebaseAnalytics を導入する方法でした。 バージョンを変更することで解消できました。どなたかの参考になれば幸いです。