[Flutter]Firebase AuthenticationをAndroidで使用しようとするとAPIException

こんばんは。お元気ですか。

FlutterでFirebase Authenticationを使用したアプリをAndroid向けにビルドしてテストしていたところ、以下のようなAPIExceptionが発生しました。

com.google.android.gms.common.api.ApiException: 10

iOSでは正しく認証できていたので、なんだろうと思っていたのですが、調べてみたらなんのことはなく、Firebase のコンソールで設定が抜けていたことが原因でした。

解決方法

Androidでアプリを実行する前に、Firebaseのコンソールから、デバッグ・本番用のフィンガープリントを登録する必要があります。

フィンガープリント確認方法

デバッグ実行用のフィンガープリント

デバッグ実行用のフィンガープリントを以下のコマンドで確認します。

Macの場合

keytool -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore

Windowsの場合

keytool -list -v \
-alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

デバッグの場合は、上記コマンドのまま入力すればOK、置換しないといけないところはありません。

本番実行用のフィンガープリント

本番実行用のフィンガープリントは以下のコマンドで確認します。

keytool -list -v \-alias <your-key-name> -keystore <path-to-production-keystore>

<your-key-name>は、任意の文字列でご自分のアプリ固有に自分がわかるように名付けた文字列でOK、<path-to-production-keystore>は、署名かぎを格納している(格納したい)ファイルを指定します。

上記コマンドで、SHA1 or SHA-256のフィンガープリントが表示されるのでメモしておきます。

Firebaseコンソールに設定

デバッグ用、本番実行用のフィンガープリントを取得できたら、Firebaseコンソールを表示して[設定]に遷移します。

Firebaseのプロジェクトに紐づけられたアプリ名が表示されるので[フィンガープリントを追加]をクリックします。

そうしましたら、以下の画面から、先ほど確認したフィンガープリントをデバッグ実行用、本番実行用と一行ずつ入力して保存することでエラーを回避することができるのでやってみてください。

[Flutter]Firebase cloud firestoreをAndroidで使おうとするとビルドできずエラーになる件

こんばんは。今日もお仕事お疲れ様です。

Firebase Cloud firestore を使用したFlutterのブロジェクトでAndroid版アプリをビルドするとき、エラーになってしまいビルドできないことがありました。

使用しているライブラリ

cloud_firestore: ^0.14.3

発生するエラー

D8: Cannot fit requested classes in a single dex file (# methods: 82189 > 65536) 
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
The number of method references in a .dex file cannot exceed 64K.

これはどういうことかというと、俗に64K問題と呼ばれているもので、単一のDEXより参照できるメソッドが 65536 個に制限されているものです。上記のエラー例であれば、 82189 個のメソッドが存在するためエラーとなっているようです。そんな問題があるんだ。。。わからん。

解決方法

解決方法はとても簡単です。

android/app/build.gradle に65536を超えて参照できる設定を記述するだけです。
具体的には「multiDexEnabled true」を下記の位置に追記します。

android {
    :
    defaultConfig {
        :
        multiDexEnabled true
    }
    :
}

これぐらいライブラリの中でいい感じに吸収してくれませんかね。

参考URL

https://developer.android.com/studio/build/multidex

[Flutter]Firebase Remote Configで No virtual method isDeveloperModeEnabled()Z in classエラーが発生する

こんばんは。今日もお疲れ様です。

FlutterでFirebase Remote Configを使用したプログラムをビルドしたときに、

E/flutter (18539): [ERROR:flutter/shell/platform/android/platform_view_android_jni_impl.cc(43)] java.lang.NoSuchMethodError: No virtual method isDeveloperModeEnabled()Z in class Lcom/google/firebase/remoteconfig/FirebaseRemoteConfigSettings; or its super classes (declaration of 'com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings' appears in /data/app/my.app-ItOxdJo5ljyanMFjofxlDg==/base.apk)

というビルドエラーが出て、頭を抱えていました。

Githubにもissueとして取り上げられておりましたので解決方法をここに記しておきたいと思います。なお、2020年2月15日現在修正されていないバグのようです。

https://github.com/FirebaseExtended/flutterfire/issues/4035

回避方法

app/src/build.gradleに

dependencies { 
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 
  implementation 'com.google.firebase:firebase-analytics'
implementation platform('com.google.firebase:firebase-bom:26.4.0') 
}

と記載されていたら、上記の3行目のimplementationを以下の通り書き換えてください。

dependencies { 
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 
  implementation 'com.google.firebase:firebase-analytics'   implementation platform('com.google.firebase:firebase-bom')
 }

これで解決します!

買い物メモリスト プライバシーポリシー

プライバシーポリシー

アプリ「買い物メモリスト」(以下、当アプリと呼ぶ)は、お客様利用者の個人情報を収集しておりません。

免責

利用者個人の不注意により個人の端末が第三者に利用された場合は、個人情報を閲覧される可能性がございますので、ご利用にあたっては、使用および管理について個人が責任を負うと共に、使用上の過誤または第三者による不正使用については十分ご注意願います。

プライバシー・ポリシーの変更の有無

このプライバシー・ポリシーは、予告なく変更する場合があります。その場合は事前・事後にかかわらず、本アプリ内のしかるべき場所において適切に通知するものとします。

(令和3年2月14日初版)

冷蔵庫メモ プライバシーポリシー

プライバシーポリシー

アプリ「冷蔵庫メモ」(以下、当アプリと呼ぶ)は、以下の情報をGoogleのFirebaseを使用して収集しています。

  • ユーザのニックネーム。
  • メールアドレス。
  • ユーザのプロフィール写真。
  • 冷蔵庫の名前、冷蔵庫の中身に関する情報。

免責

利用者個人の不注意により個人の端末が第三者に利用された場合は、個人情報を閲覧される可能性がございますので、ご利用にあたっては、使用および管理について個人が責任を負うと共に、使用上の過誤または第三者による不正使用については十分ご注意願います。

プライバシー・ポリシーの変更の有無

このプライバシー・ポリシーは、予告なく変更する場合があります。その場合は事前・事後にかかわらず、本アプリ内のしかるべき場所において適切に通知するものとします。

(令和3年2月10日初版)

指文字ムービーメーカー プライバシーポリシー

プライバシーポリシー

アプリ「指文字ムービーメーカー」(以下、当アプリと呼ぶ)は、お客様の氏名や住所等、お客様のいかなる個人情報も収集しておりません。
また、お客様が入力した文章も外部に送信しておりません。

免責

利用者個人の不注意により個人の端末が第三者に利用された場合は、個人情報を閲覧される可能性がございますので、ご利用にあたっては、使用および管理について個人が責任を負うと共に、使用上の過誤または第三者による不正使用については十分ご注意願います。

プライバシー・ポリシーの変更の有無

このプライバシー・ポリシーは、予告なく変更する場合があります。その場合は事前・事後にかかわらず、本アプリ内のしかるべき場所において適切に通知するものとします。

(令和3年1月26日初版)

やさしいにほんご プライバシーポリシー

プライバシーポリシー

アプリ「やさしいにほんご」(以下、当アプリと呼ぶ)は、お客様の氏名や住所等、お客様のいかなる個人情報も収集しておりません。
また、お客様が入力した文章はYahoo!JapanのAPIに送信して変換しております。

免責

利用者個人の不注意により個人の端末が第三者に利用された場合は、個人情報を閲覧される可能性がございますので、ご利用にあたっては、使用および管理について個人が責任を負うと共に、使用上の過誤または第三者による不正使用については十分ご注意願います。

プライバシー・ポリシーの変更の有無

このプライバシー・ポリシーは、予告なく変更する場合があります。その場合は事前・事後にかかわらず、本アプリ内のしかるべき場所において適切に通知するものとします。

(令和3年1月19日初版)