将Firebase开发环境和生产环境分离

269

我正在考虑使用Firebase作为MBaaS,但我找不到任何可靠的解决方案来解决以下问题:

我想设置两个独立的Firebase环境,一个用于开发,另一个用于生产,但我不想在开发和生产环境之间手动复制功能(例如远程配置设置、通知规则等)。

有没有工具或方法可以依赖?从头开始设置远程配置或通知规则可能是一项艰巨的任务,也太冒险了。

有什么建议吗?是否有比拥有两个独立环境更好的方法?

在你发表解释如何设置独立Firebase账户的答案之前,请再次阅读问题。问题是:如何在不同的开发和生产账户之间传输更改或其他方案优于手动复制。


14
作为一项功能,这将是很棒的! - Patrick Jackson
4
https://firebase.googleblog.com/2016/07/deploy-to-multiple-environments-with.html - Timmerz
@Timmerz 请看第一个答案:仅适用于托管和数据库,而不适用于其他功能。 - racs
1
@LOG_TAG 你创建一个全新的标签的原因是什么?这是否涉及到任何尚未被 [firebase] 覆盖的新技术? - Michael Dodd
@MichaelDodd #askfirebase 是谷歌 Firebase 开发者 QA 下更受欢迎的标签!为了获得更多问题的曝光度,我创建了这个标签,有任何反馈吗?https://twitter.com/search?q=%23askfirebase - LOG_TAG
显示剩余4条评论
12个回答

1
创建Firebase上的Dev和Production环境下的Tow项目,并从thre下载json文件。
根据以下步骤设置SDK:https://firebase.google.com/docs/android/setup 或者针对Crashlytics:https://firebase.google.com/docs/crashlytics/get-started?platform=android 首先,在以下位置放置每个buildType对应的google_services.json文件。
app/src/debug/google_services.json
app/src/test/google_services.json
app/google_services.json

注意:根目录下应该有一个名为app/google_services.json的文件,根据构建变量复制json代码到根json文件中。
现在,在您的应用程序的build.gradle文件中编写一些gradle任务,以自动将适当的google_services.json移动到app/google_services.json。
将此代码复制到app/Gradle文件中。
task switchToDebug(type: Copy) {
description = 'Switches to DEBUG google-services.json'
from "src/debug"
include "google-services.json"
into "."
}

task switchToRelease(type: Copy) {
description = 'Switches to RELEASE google-services.json'
from "src/release"
include "google-services.json"
into "."
}

很好 - 但在构建应用程序之前手动运行这些任务很麻烦。我们希望适当的复制任务能够在运行assembleDebug或:assembleRelease之前的某个时间运行。让我们看看在运行:assembleRelease时会发生什么:将此复制到/gradlew文件中。
Zaks-MBP:my_awesome_application zak$ ./gradlew assembleRelease
Parallel execution is an incubating feature.
.... (other tasks)
:app:processReleaseGoogleServices
....
:app:assembleRelease

请注意:app:processReleaseGoogleServices任务。该任务负责处理根google_services.json文件。我们希望正确的google_services.json被处理,因此我们必须立即在之前运行我们的复制任务。 将此添加到您的build.gradle中。请注意afterEvaluate封装。
将其复制到app / Gradle文件中。
afterEvaluate {
processDebugGoogleServices.dependsOn switchToDebug
processReleaseGoogleServices.dependsOn switchToRelease
}

现在,每当调用 :app:processReleaseGoogleServices 时,我们新定义的 :app:switchToRelease 将首先被调用。debug buildType 的逻辑也是如此。您可以运行 :app:assembleRelease,然后 release 版本的 google_services.json 将自动复制到您的应用程序模块的根文件夹中。

2
你在这个回答中花费了很多精力,但是1. 这与问题无关(请再次阅读问题),2. 如果你将google-services.json文件保留在flavour文件夹中,就不必将其复制到根文件夹中。相反,你可以调用assembleTestRelease任务而不是assembleRelease - racs

0
我们的做法是为不同的环境创建不同的JSON密钥文件。我们使用了谷歌推荐的服务账号功能,并拥有一个开发文件和一个生产文件。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接