firebase-toolsでiOS/AndroidのconfigファイルをCLIからダウンロードする

Wednesday, August 28, 2019

firebase-tools v7.2.3以降で、apps:create, apps:list, apps:sdkconfig が搭載され、firebase-tools経由で、指定のプロジェクトに対して

  • iOS/Android Appの作成
  • Appリストの表示
  • iOS/Androidで使う構成ファイル(Google-Service-Info.plist/google-services.json)のダウンロード

が出来るようになりました。今回はfirebase-toolsを使って、構成ファイルのダウンロードを行う方法を書き留めておきます。

従来のダウンロード方法

従来は、

  • webでFirebaseのコンソールを開き、該当の構成ファイルをダウンロードしてくる
  • https://firebase.googleapis.com/v1beta1/projects のAPIを叩いて取得する

といった方法で構成ファイルをダウンロードしてくることになっていました。どちらも若干手間がかかるものでした

firebase-toolsを使う

・ファイルのダウンロード

v7.2.3以降のfirebase-toolsを使うと、次のように簡単に取得することができるようになります。
firebase apps:sdkconfigを実行してみると、今のプロジェクトの設定から構成ファイルを取得したいAppの一覧が表示されます。

$ firebase apps:sdkconfig
? Select the app to get the configuration data: (Use arrow keys)
❯ Foo App - 1:aaa:ios:bbbbb (IOS)
  Foo App Beta - 1:ccc:ios:ddddd (IOS)
  Bar App - 1:xxx:android:yyyyy (Android)
✔ Downloading configuration data of your Firebase IOS app

=== Your app configuration is ready ===
...

対話式になっているので、Appを選択するとダウンロードが行われ、結果が出力されます。
ただ、単純に文字列として出力されているだけなので、-o [ファイル出力先]のオプションを付けることで、指定したところに書き出しができます。

$ firebase apps:sdkconfig -o /path/to/Google-Service-Info.plist
? Select the app to get the configuration data: (Use arrow keys)
❯ Foo App - 1:aaa:ios:bbbbb (IOS)
  Foo App Beta - 1:ccc:ios:ddddd (IOS)
  Bar App - 1:xxx:android:yyyyy (Android)
✔ Downloading configuration data of your Firebase IOS app

=== Your app configuration is ready ===
App configuration is written in /path/to/Google-Service-Info.plist

・Appを最初から指定してダウンロード

上記の方法では、都度Appを聞かれてしまいます。直接指定のAppの構成ファイルをダウンロードする場合は、プラットフォームと、App ID(対話式のときに項目に表示されるID)をコマンドに渡します。

$ firebase apps:sdkconfig ios 1:aaa:ios:bbbbb -o /path/to/Google-Service-Info.plist
✔ Downloading configuration data of your Firebase IOS app
=== Your app configuration is ready ===
App configuration is written in /path/to/Google-Service-Info.plist

注意点

  • 選択するAppに関してはfirebase useで選択しているプロジェクトが参照されるので、開発/本番と分けている場合は都度切り替えが必要です。
  • v7.3.0現在では書き出し先に既にファイルが存在する場合-fといったコマンドが用意されておらず、overrideするかどうか聞かれるので、yと答えるか、事前に既存ファイルをrmコマンドで消しておくなりが必要です。

利点

従来よりもダウンロードしやすくなったので、「構成ファイルを.gitignoreに入れつつ、開発環境のsetup時にダウンロードする処理を書いておく」といった管理がしやすくなると思います。
いくらprivateなリポジトリとはいえ、gitに含んでおきたくない…しかしダウンロードがやや面倒だし複数人でやるときにセットアップ時に都度都度ダウンロードしてもらうのは面倒、といった時に役に立ちそうです。

TechFirebaseTipsCLIiOSAndroid

XcodeのUnitTestでFirestore Emulatorと接続してテストを書く

concurrentlyを使う時に並列コマンドに引数を渡す