[Flutter]FirebaseAnalyticsを導入する

広告Flutter
2024年4月7日

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.comgoogle.com
  • firebase のプロジェクト作成する
  • firebase プロジェクトにアプリを追加する
  • firebase プロジェクトのアナリティクスを有効にする

パッケージインストール

Get started with Google Analytics(Google アナリティクスの利用を始める)  |  Google Analytics for Firebase

google.comgoogle.com

firebase_analyticsパッケージをインストールします。

flutter pub add firebase_analytics

flutter のmain.dartfirebase_analyticsを import し、動作確認用にアプリオープンを記録するコードを追記しておきます。

lib/main.dart
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.gradlepluginsid("com.google.gms.google-services") version "4.4.1" apply false を追記します。

また、com.android.application と org.jetbrains.kotlin.android のバージョンも変更しています。 (詳細は後半のつまづいたところを参照ください)

android/settings.gradle
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

pluginsid 'com.google.gms.google-services'を追記します。

android/app/build.gradle
plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
    id 'com.google.gms.google-services' // <-- 追記
}
 

また同ファイルのdependencies

android/app/build.gradle
dependencies {
    implementation platform('com.google.firebase:firebase-bom:32.8.0') // <-- 追記
    implementation 'com.google.firebase:firebase-analytics'  // <-- 追記
}

gradle のバージョンを変更による影響があった箇所です。

android/gradle/wrapper/gradle-wrapper.properties
・・・
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip

ndkVersion もエラーが出たためメッセージ通りにバージョン変更しました。

android/app/build.gradle
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.comgoogle.com
android/settings.gradle
plugins {
    id "com.google.gms.google-services" version "4.4.1" apply false  // <--
}
android/app/build.gradle
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.gradleorg.jetbrains.kotlin.androidのバージョンを変更しました。

android/settings.gradle
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.comstackoverflow.com
Plugin com.google.gms.google-services version 4.4.0 apply: false was not found in any of the following sources
plugins {
    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 をクリックしてバージョンを変更しました。

変更された箇所は以下の通りです。

android/settings.gradle
plugins {
    id "com.android.application" version "8.3.0" apply false // <-- 7.3.0 -> 8.3.0
    ・・・
}
android/gradle/wrapper/gradle-wrapper.properties
・・・
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/app/build.gradle
android {
	・・・
	ndkVersion "25.1.8937393"
}

この状態でビルドするとエラーが解消され、Analytics のイベントが Firebase に送信されることも確認できました。

また、最初にバージョンを下げた id 'com.google.gms.google-services'を'4.3.14'から '4.4.1' に戻しても問題なく動作しました。

android/settings.gradle
plugins {
  id 'com.google.gms.google-services' version '4.4.1' apply false  // '4.3.14' -> '4.4.1'

まとめ

以上、Flutter 3.19 で FirebaseAnalytics を導入する方法でした。 バージョンを変更することで解消できました。どなたかの参考になれば幸いです。

参考

Configure a Gradle project | Kotlin

kotlinlang.orgkotlinlang.org
Configure a Gradle project | Kotlin

🐛 [firebase_analytics] Missing google_app_id. Firebase Analytics disabled. [ANDROID] · Issue #11912 · firebase/flutterfire

Bug report Describe the bug After installing firebase on a new app it gives the error "Missing google_app_id. Firebase Analytics disabled. Steps to reproduce Steps to reproduce the behavior: create...github.comgithub.com
🐛 [firebase_analytics] Missing google_app_id. Firebase Analytics disabled. [ANDROID] · Issue #11912 · firebase/flutterfire

Just a moment...

mvnrepository.commvnrepository.com