web-dev-qa-db-ja.com

Firebase 2.0-Android=アプリの複数のフレーバー(環境)を処理する方法?

アプリには複数のフレーバーがあります。このサーバー側の設定方法は?私のパッケージ名は次のとおりです。

com.example.app(プロダクション)com.example.app.staging (演出) com.example.app.fake(偽物)

これは、firebaseコンソールの3つの個別のプロジェクトですか?

29
ZakTaccardi

主に、プロジェクトの動作方法に依存します。同じコンソールで3つすべてをセットアップすることも、2つ以上の異なるプロジェクトとしてセットアップすることもできます。どちらのオプションも有効です。

同じプロジェクトの利点:

  • 同じ請求、割り当て、権限、サービス(データベース、ストレージ、FCMなど)を共有します。
  • 本番と同じ環境。

さまざまなプロジェクトの利点:

  • 実稼働データを上書きしたり、実稼働ユーザーに影響を与えたりするリスクはありません。

複数のプロジェクトを使用している場合、 build types サポートを利用して、異なるgoogle-services.jsonさまざまなバージョンのファイル。 1つのプロジェクトを使用する場合、同じgoogle-services.jsonはすべての種類で機能します。

注:CodyMaceがコメントで述べているように、アプリを追加するたびにJSONファイルを再ダウンロードすることを忘れないでください!

どちらの場合でもリスクを最小限に抑えるためにできることはあります(たとえば、データベースにdev/stage/prod /キーがあり、その下に同様の構造があります)。

始めたばかりの場合は、開発中に1つのプロジェクトから始めることをお勧めします。起動したら、開発環境を別のプロジェクトに移行することを検討してください。ステージングは​​どちらの方法でも可能です。

24
Ian Barber

注:まだこれを完全には試していませんが、到達するまで失わないようにここに文書化します。

実際には、すべてのフレーバーとビルドタイプに対応するfirebaseプロジェクトを強制するgradleプラグインを使用する必要はありません。

これはあまり文書化されていませんが、 FirebaseApp および https://firebase.google.com/docs/configure/ のドキュメントの上部にヒントを見つけることができます=

または、initializeApp(Context、FirebaseOptions)は、デフォルトのアプリインスタンスを初期化します。このメソッドは、アプリケーションから呼び出す必要があります。これは、アプリケーションのメインプロセスの外部で使用される場合にも必要です。

したがって、google-services.json通常どおり、それからmobilesdk_app_idおよびcurrent_key (下 api_key)、少なくともGoogleアナリティクスのトラッキングに必要なものはこれだけです。その情報を使用して、必要なバリアントのアプリのApplicationサブクラスで次を実行します。

FirebaseOptions options = new FirebaseOptions.Builder()
  .setApplicationId("<mobilesdk_app_id>")
  .setApiKey("<current_key>")
  .build();
FirebaseApp.initializeApp(this, options);
3
Jonne Haß