はじめに
AndroidアプリにFirebase Admin SDKを組み込もうとしたら、Duplicate classエラーが発生しました。原因は単純でしたが、嵌まってしまい、すぐに気づけませんでした。そこで、メモを残しておくことおにしました。
結論
Firebase Admin SDK(’com.google.firebase:firebase-admin:X.X.X’)は、スタンドアローンやサーバーアプリケーション向けに作られていて、androidアプリ向けではありません。android用の同じ目的のライブラリは、Firebase SDK for Android(’com.google.firebase:firebase-auth’ など)です。具体的なライブラリの一覧は、以下のURLの「使用可能なライブラリ」セクションにあります。Firebase Authentication、Firestore、Realtime Database、Cloud Messagingなど、androidアプリ向けとしてさまざまなFirebaseサービスが含まれていますが、’firebase-admin:X.X.X’はその中に含まれていません。つまり、同様のライブラリを2つ定義したいたため、重複エラーが発生したのです。
私が’com.google.firebase:firebase-admin:X.X.X’を使用しようと考えたのは、アプリ内でユーザーを作成するためでしたが、より簡単な方法が見つかりました。具体的には、匿名ユーザーとしてログインした後、各ユーザーに専用のドキュメントを作成する方法です。
エラーはいつ起きたのか?
Google Playに登録しているAndroidアプリで使用している『ニフクラ mobile backend』が、2024年3月いっぱいでサービスを終了することが決まりました。このため、『FirebaseのCloud Firestore』への切り替えを行っている最中に、以下のエラーが発生しました。
初めてFirebaseを使ったため、ライブラリの使い方がよく分ってなかったのことも原因の1つです。以下の作業を進めようとしていた最中でした。
なぜ起きたのか?
‘com.google.firebase:firebase-admin:X.X.X’と’com.google.firebase:XXXXXXX'(androidアプリ用)を同時に指定したことが、問題の直接的な原因です。
dependencies {
・
implementation "com.google.firebase:XXXXXXXX"
・
implementation "com.google.firebase:firebase-admin:X.X.X"
・
}
com.google.firebase:firebase-admin:X.X.Xは、言い換えると、サーバーやスタンドアローン向けのcom.google.firebase:XXXXXXXです。同じ目的のライブラリのため、同じようなクラスやパッケージがたくさん存在しており、その結果、Duplicate classエラーが大量に発生しました。
このエラーから学んだこと
このページを見て、『android端末からFirebase Admin SDKを追加できるだろう』と安易に思い込んでしまい、組み込もうとしたのが根本的な間違いでした。
マニュアルはきちんと読むこと
『サーバーに・・・』というタイトルの通り、『com.google.firebase:firebase-admin:X.X.X:Firebase Admin SDK』は、スタンドアローンやサーバーアプリケーションで使うためのもので、Androidアプリ用ではありません。
心の余裕を持って開発すること
『app:mergeDebugJavaResource』で発生した『Duplicate class・・・』エラーは、上の画像では表示されていますが、実際は閉じていました。そのため、プログラムコードにミスがあると思い込んでしまい、気づくのが遅れました。ライブラリをimplementationに追加したときに、すぐにプログラムを一度実行していれば気づけたはずです。
補足
ここまでお読みいただき、ありがとうございます。これからは私の趣味についてお話します。もしよろしければ、もうしばらくお付き合いください。
この道具は、使い古された緑茶や前茶を煎って、手で振りながら強火で1分ほどでほうじ茶にするための道具です。
通常の使い方ではなく、コーヒー生豆の焙煎に使います。妻と週末に飲むために、毎週月曜日に10分だけ費やしています。
不器用な男性は、労力を通じて感謝や愛情を表現します
コーヒー豆を焙煎すると、そのおいしさがピークに達するのは焙煎後約5日目くらいだと言われています。一般的には、焙煎後3日から14日の間が最も美味しい期間とされています。週末に消費する分としては、約60g(約6杯分)が適量です。
私は以前はブルーマウンテンやエメラルドマウンテンのような酸味のある豆が好みでしたが、最近は高価で手が届かなくなりました。酸味のある豆の中で、手ごろな価格で手に入る代表がモカです。モカは広く知られているため、価格が比較的安定しているでしょう。私の好みの豆には及びませんが、モカも非常においしい豆の一つです。
たまには贅沢に、最高級グレードのG1を試してみませんか?少量でも手ごろな価格で入手できると思います。
1杯あたりの価格は約10gで50~60円ほどです。G1のモカをこの価格で味わえるのは本当にお得です。財布に厳しい妻も大満足です。
なんだか、コーヒーが飲みたくなってきたわ。
最後まで読んでいただき、ありがとうございました。
コメント