web-dev-qa-db-fra.com

Firebase 2.0 - comment gérer plusieurs saveurs (environnements) d'une application Android?

J'ai plusieurs versions de mon application. Comment dois-je configurer cela côté serveur? Les noms de mes packages sont:

com.example.app (production) com.example.app.staging (mise en scène) com.example.app.fake (faux)

Devrait-il s'agir de 3 projets distincts dans la console Firebase?

29
ZakTaccardi

Cela dépendra en grande partie de la façon dont vous souhaitez que votre projet fonctionne. Vous pouvez configurer les trois dans la même console ou configurer deux ou plusieurs projets différents. L'une ou l'autre option est valide.

Avantages du même projet:

  • Partagez la même facturation, les quotas, les autorisations et les services (base de données, stockage, FCM, etc.).
  • Environnement identique à la production.

Avantages de différents projets:

  • Aucun risque d'écraser les données de production ou d'affecter les utilisateurs de production.

Si vous utilisez plusieurs projets, vous pouvez profiter du support types de build qui vous permettra d'avoir différents google-services.json fichiers pour différentes versions. Si vous utilisez un projet, le même google-services.json fonctionnera pour toutes les variétés.

Remarque: comme le dit CodyMace dans les commentaires - n'oubliez pas de télécharger à nouveau le fichier JSON chaque fois que vous ajoutez une application!

Il y a des choses que vous pouvez faire pour minimiser les risques dans les deux cas (par exemple, avoir des clés dev/stage/prod/dans votre base de données, et avoir des structures similaires en dessous), mais ce qui est logique pour vous, c'est principalement les compromis.

Si vous débutez, je suggère de commencer par un projet pendant que vous êtes en développement, et une fois que vous avez lancé, envisagez de déplacer votre environnement de développement vers un projet distinct. La mise en scène pourrait aller dans les deux sens.

24
Ian Barber

Remarque Je n'ai pas encore essayé complètement, mais je l'ai documenté ici pour ne pas le perdre jusqu'à ce que j'y arrive.

En fait, on n'est pas obligé d'utiliser le plugin gradle, qui vous oblige à avoir un projet Firebase pour toutes vos versions et types de build.

Ceci est mal documenté, mais on peut trouver un indice en haut de la documentation pour FirebaseApp et quelques autres sur https://firebase.google.com/docs/configure/ =

Vous pouvez également initialiserApp (Context, FirebaseOptions) initialise l'instance d'application par défaut. Cette méthode doit être invoquée depuis Application. Cela est également nécessaire s'il est utilisé en dehors du processus principal de l'application.

Alors, récupérez le google-services.json comme d'habitude et en prendre mobilesdk_app_id et current_key (en dessous de api_key), cela devrait être tout ce dont vous avez besoin pour le suivi de Google Analytics au moins. Avec ces informations, exécutez ce qui suit dans la sous-classe Application de votre application pour les variantes où vous en avez besoin:

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