前回の復習
記事はこちら。
AndroidとiOSで共通する設定も行ってますので、先に上記記事の内容から行うことをオススメします。今回はAndroid編です。と言っても大体の設定やコード追加は終わってますので、難しい事はありません。
(Firebase側)プロジェクト作成&GoogleServices.json設定
まずはGoogleServices.jsonをダウンロードするところまで進めてください。ダウンロードしたら、android/app内に配置します。次にandroid/build.gradleをVSCode等で開き、
dependencies { classpath 'com.android.tools.build:gradle:3.5.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.3' } <-追加
Google-Servicesの記述を追加します。バージョンに関しては最新版をこちらで確認してください。
https://maven.google.com/web/index.html#com.google.gms:google-services
また、最終行に
apply plugin: 'com.google.gms.google-services'
を追加します。
その次はandroid/app/build.gradleを開きます。先ほどとはパスが違いますので気をつけてください。
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' ←追加する
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
真ん中ぐらいに上記の記述があるので、apply plugin: ‘com.google.gms.google-services’を追加してください。そして一番最後に
dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.google.firebase:firebase-analytics:17.4.4' <=追加する }
com.google.firebase:firebase-analyticsに関する記述を追加します。バージョンはググって新しい分を指定してください。
更に、minSdkVersionを上げておく必要があるそうです。
minSdkVersion 21
自分の環境では21でOKでした。
まだ作業はあります。次はandroid/settings.gladleを開き、一番下に
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() def plugins = new Properties() def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') if (pluginsFile.exists()) { pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } } plugins.each { name, path -> def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() include ":$name" project(":$name").projectDir = pluginDirectory }
を追加します。追加したら保存し、ターミナルを開きプロジェクトのルートフォルダで
flutter packages get
を実行してください。
デバッグしてみる
デバッグしてみると動くはずです。ですがエラーメッセージもコンソールに表示される場合があります。自分の場合は
* What went wrong: Execution failed for task ':app:processDebugGoogleServices'. > No matching client found for package name 'プロジェクトのID'
でした。どうもダウンロードした設定ファイルとアプリでIDが違っている様です。android/app/build.gradleの中にある、applicationIdを見てみると,
com.muchilog.appname.appname
の様に、なぜかアプリ名が2回繰り返されてましたので修正しました。
こちらを参考にしました。補足するとするならば、AndroidManifest.xmlは複数存在します。
あとはandroid/app/src/main/kotlin/com/muchilog/appname/appnameとなっている場所があるので、正しいバンドルIDと揃う様にファインダーでフォルダを増減させ、そして一番深いところにMainactivity.ktを配置します。このMainactivity.ktも編集してください。
にしても不思議ですね。iOSは前回でも確認しましたがバンドルIDはプロジェクトを作成した時点で正しく設定されていました。Androidだけ変な事に。原因は不明です。何か情報ありましたら教えていただけると幸いです。
今度こそデバッグ
今度こそはうまく行きました。FirebaseConsoleを確認すると、
まとめ
長かったですね!これでAndroidも無事完了です。次はFirebaseAuthenticationの実装を行います。よろしければこちらも試してみてください。