在Google I / O 2016会议中,显示了对Firebase完全集成的重大改进。在我的应用程序中,我尝试迁移到新的解决方案,但有几个问题。其中之一如下:
在我的Firebase应用中,我使用参数来定义Firebase数据库,如下所示(gradle):
gradle.properties文件:
FIREBASE_REF_REL="https://xxxxxxx.firebaseio.com/"
FIREBASE_REF_DEB="https://xxxxxxx-dev.firebaseio.com/"
build.gradle文件:
buildTypes {
debug {
minifyEnabled false
multiDexEnabled true
it.buildConfigField 'String', 'FIREBASE_ROOT_URL', FIREBASE_REF_DEB
}
release {
minifyEnabled true
useProguard true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
zipAlignEnabled true
it.buildConfigField 'String', 'FIREBASE_ROOT_URL', FIREBASE_REF_REL
}
return true
}
这使我可以针对调试Firebase环境运行我的调试应用程序,这有助于我测试数据模型和安全规则中的更改,而不会影响生产环境。
在新的Firebase解决方案中,这似乎不再可行,因为生成的google-services.json
文件包含Firebase参考(如下所述:https://firebase.google.com/support/guides/firebase-android#import_your_project_to_the_new_firebase_console_numbered)。
尝试引用我的调试数据库时,出现以下类型的错误:
Caused by: com.google.firebase.database.DatabaseException: Invalid URL (https://xxxxxxx-dev.firebaseio.com/) passed to getReference(). URL was expected to match configured Database URL: https://xxxxx.firebaseio.com
我的问题:在新情况下针对测试Firebase数据库运行应用的正确方法/最佳做法是什么?
答案 0 :(得分:17)
我不确定这是最佳做法。
您可以使用不同的google-services.json
文件
我正在调查当前插件(com.google.gms:google-services:3.0.0
)是否支持构建类型。
前一个(com.google.gms:google-services:2.1.X
)支持的风格,但不支持类型。
在任何情况下,你都应该能够像这样使用somenthing:
app/src/release/google-services.json
app/google-services.json
在这种情况下,插件会查找位置并在找到google-services.json
文件时停止。
通过这种方式,您应该可以使用不同的firebase应用程序进行调试和发布。
答案 1 :(得分:-1)
上面的答案指出,不需要各种google-services.json文件。而是在Firebase中创建项目。每个项目可以有多个应用程序(甚至跨越不同的平台)。
在我的例子中,我有两种构建类型(调试和发布)和两个productFlavor,导致4个应用程序具有不同的包名称:
一个google-services.json文件涵盖了所有这些变体,应该放入Android Studio项目的app模块中。