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

Zak*_*rdi 29 android firebase google-cloud-platform

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

com.example.app(制作) com.example.app.staging(分期) com.example.app.fake(假)

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

Ian*_*ber 24

主要取决于您希望项目的工作方式.您可以在同一控制台中设置所有三个,也可以设置为两个或更多不同的项目.这两个选项都有效.

同一项目的好处:

  • 共享相同的计费,配额,权限和服务(数据库,存储,FCM等).
  • 环境与生产相同.

不同项目的好处:

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

如果使用多个项目,您可以利用构建类型支持,这将允许您google-services.json为不同版本提供不同的文件.如果使用一个项目,同样google-services.json适用于所有品种.

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

在任何一种情况下,您都可以采取一些措施来最大限度地降低风险(例如,在您的数据库中使用dev/stage/prod/keys,并在下面有类似的结构),但对您来说有意义的主要是权衡.

如果您刚刚开始,我建议您在开发过程中从一个项目开始,一旦启动,请考虑将开发环境转移到单独的项目中.分段可以是两种方式.

  • 我没有意识到每次你添加一个新的"app",换句话说就是"staging"或"debug"版本,它会为你创建一个包含所有应用程序的json文件. (5认同)

Jon*_*Haß 5

请注意,我还没有完全尝试过,但在此处记录它以免在我得到它之前丢失它。

实际上并没有被迫使用 gradle 插件,它强制您为所有风格和构建类型拥有一个 firebase 项目。

这没有很好的记录,但是可以在FirebaseApp的文档顶部找到提示,在https://firebase.google.com/docs/configure/ 上可以找到更多提示

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

因此,google-services.json像往常一样获取mobilesdk_app_idcurrent_key(在 下api_key),这至少应该是 Google Analytics 跟踪所需的全部内容。使用该信息,在您的应用程序Application子类中针对您需要的变体运行以下内容:

FirebaseOptions options = new FirebaseOptions.Builder()
  .setProjectId("<project_id>")
  .setApplicationId("<mobilesdk_app_id>")
  .setApiKey("<current_key>")
  .build();
FirebaseApp.initializeApp(this, options);
Run Code Online (Sandbox Code Playgroud)