Firebase 2.0 – 如何处理Android应用程序的多种风味(环境)?

我有我的应用程序的多种口味。 我应该如何设置这个服务器端? 我的软件包名称是:

com.example.app (production) com.example.app.staging (staging) com.example.app.fake (fake)

这应该是Firebase控制台中的3个独立项目吗?

Solutions Collecting From Web of "Firebase 2.0 – 如何处理Android应用程序的多种风味(环境)?"

很大程度上取决于你希望你的项目如何工作。 您可以在同一个控制台中设置所有三个,也可以将其设置为两个或更多不同的项目。 这两个选项都是有效的。

同一个项目的好处:

  • 共享相同的帐单,配额,权限和服务(数据库,存储,FCM等)。
  • 和生产一样的环境。

不同项目的好处:

  • 没有覆盖生产数据或影响生产用户的风险。

如果使用多个项目,则可以利用构buildtypes支持,这将允许您针对不同版本使用不同的google-services.json文件。 如果使用一个项目,相同的google-services.json将适用于所有的品种。

注意:正如CodyMace在评论中所说 – 记得每次添加应用程序时都要重新下载JSON文件!

在这两种情况下,你都可以做一些事情来降低风险(例如,在你的数据库中有dev / stage / prod / keys,下面有类似的结构),但是对你来说有意义的主要是权衡。

如果你刚开始,我会build议从开发一个项目开始,一旦你开始考虑移动你的开发环境到一个单独的项目。 分期可以去任何一个方面。

注意我还没有完全尝试这个,但是在这里logging下来,直到我find它。

其中一个实际上并不是被迫使用gradle插件,这会强制你为所有的风格和构buildtypesbuild立一个firebase项目。

这是logging不佳,但可以在FirebaseApp的文档顶部find提示,还可以在https://firebase.google.com/docs/configure/中find更多提示

或者initializeApp(Context,FirebaseOptions)初始化默认的应用程序实例。 这个方法应该从Application调用。 如果在应用程序的主进程之外使用这也是必要的。

因此,像往常一样获取google-services.json ,并从中获取mobilesdk_app_idcurrent_key (在api_key下),这至less应该是Google Analytics跟踪所需要的。 通过这些信息,在您的应用程序的Application子类中为您需要的变体运行以下代码:

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