タイトルのとおり、初期設定がちょっと面倒だったので記録に残しておきます。
エラー概要
とりあえずFlutterをinitして、Firebaseのプロジェクトを作成して、案内に沿ってコマンドを実行していました。
問題がおきたのは$ flutterfire configure --project={project_id}
を実行したところ。
Which Android application id (or package name) do you want to use for this configuration, e.g. ‘com.example.app’?
という質問があったので、パッケージ名を設定しようとしました。
学習目的のアプリだったので、適当でいいやとつけようとしたところ
FirebaseCommandException: An error occured on the Firebase CLI when attempting to run a command.
COMMAND: firebase apps:create android chatapp (android) –package-name={package_name} –json –project={project_id}
ERROR: Failed to create Android app for project {project_id}. See firebase-debug.log for more info.
というエラーが発生しました。
エラー原因
エラーの原因は一つではないので「コレです!」とは言えないのですが、私の場合はパッケージ名に”-“(ハイフン)を入れていたことでした。私はしょうもないところでしっかりミスを拾うタイプです。
”_”(アンダースコア)にしたら問題なく作成してくれました。
他にもfirebaseに紐付けしすぎたことでAPIエラーになる場合などもあるようです。
(以下参考記事)
エラーの対処手順
とりあえずエラーが出てから原因を推測して対応するまでの流れを簡単に記載しておきます。
まず実行ログを確認
先ほどのエラーですが、
FirebaseCommandException: An error occured on the Firebase CLI when attempting to run a command.
COMMAND: firebase apps:create android chatapp (android) –package-name={package_name} –json –project={project_id}
ERROR: Failed to create Android app for project {project_id}. See firebase-debug.log for more info.
ちゃんと読んでみると”See firebase-debug.log for more info.”と書いてあります。
詳しくはfirebase-debug.logを見てね、と。
「firebase-debug.logってなんやねん。」となるはずです。私はなった。
このログファイルですが、エラーが起きた際にコマンドを実行したディレクトリに作成されるものでした。
これを開いてみましょう。
ログファイルを見てみる
ログファイル開くと色々書いてあります。
とりあえずErrorでキーワード検索してみたら(私のケースでは)以下の表記を見つけました。
[debug] [2025-01-13T06:01:48.676Z] <<< [apiv2][body] POST https://firebase.googleapis.com/v1beta1/projects/{project_id}/androidApps {“error”:{“code”:400,”message”:”Request contains an invalid argument.”,”status”:”INVALID_ARGUMENT”}}
不正な引数があるっぽい。
ここからバリデーションエラーかなと推測し、解決したという流れになります。
パッケージ名の命名規則について
簡単に解決したので命名規則について詳しくは調べていないのですが、Android Developersの“アプリ モジュールを設定する”に以下の記載がありました。
アプリケーション ID は従来の Kotlin または Java パッケージ名に似ていますが、アプリケーション ID の命名規則はもう少し厳密になっています。
- 2 つ以上のセグメント(1 つ以上のドット)が必要
- 各セグメントは文字で始まる必要がある
- 使用できる文字は英数字と下線のみ(a~z、A~Z、0~9、_)
これに沿った名前にしておけば問題ないんじゃないかなと思います。
自社ドメイン+アプリ名が良いっていう話も見かけたので、以下のように記載するとよさそうです。
Firebaseのエラーわかりづらくない?
ログの場所教えてくれないしエラーの内容大雑把だしわかりづらいと思うのは私だけでしょうか。(反語)
とはいえ、エラーにぶつかった先人たちが色々残してくれるのですぐに解決はできそうですね。バリデーションぐらいはちゃんと把握しておけよとか言われるかもしれないけど。
この記事もこの後エラーにぶつかった方の一助になれば嬉しいです。