如何 运行 在 'debug' Firebase 数据库上调试应用程序版本
How to run debug app version on a 'debug' Firebase database
在 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
我的问题:在新情况下,way/best 应用程序针对测试 Firebase 数据库的正确 way/best 做法是什么?
我不确定这是最佳做法。
您可以使用不同的 google-services.json
个文件。
我正在调查当前插件 (com.google.gms:google-services:3.0.0
) 是否支持构建类型。
前一个 (com.google.gms:google-services:2.1.X
) 支持风味但不支持类型。
在任何情况下你都应该能够使用这样的东西:
app/src/release/google-services.json
app/google-services.json
在这种情况下,插件会查找位置并在找到 google-services.json
文件时停止。
通过这种方式,您应该能够使用不同的 firebase 应用程序进行调试和发布。
不需要上面的答案指定的各种 google-services.json 文件。而不是在 Firebase 中创建一个项目。每个项目可以有多个应用程序(甚至跨不同平台)。
例如,在我的例子中,我有两种构建类型(调试和发布)和两种 productFlavors,导致 4 个应用程序具有不同的包名称:
- 完整调试:com.company.myapp.debug
- 完整发布:com.company.myapp
- demoDebug: com.company.myapp.demo.debug
- demo发布:com.company.myapp.demo
一个 google-services.json 文件涵盖了所有这些变体,应该将其放入您的 Android Studio 项目的应用程序模块中。
在 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
我的问题:在新情况下,way/best 应用程序针对测试 Firebase 数据库的正确 way/best 做法是什么?
我不确定这是最佳做法。
您可以使用不同的 google-services.json
个文件。
我正在调查当前插件 (com.google.gms:google-services:3.0.0
) 是否支持构建类型。
前一个 (com.google.gms:google-services:2.1.X
) 支持风味但不支持类型。
在任何情况下你都应该能够使用这样的东西:
app/src/release/google-services.json
app/google-services.json
在这种情况下,插件会查找位置并在找到 google-services.json
文件时停止。
通过这种方式,您应该能够使用不同的 firebase 应用程序进行调试和发布。
不需要上面的答案指定的各种 google-services.json 文件。而不是在 Firebase 中创建一个项目。每个项目可以有多个应用程序(甚至跨不同平台)。
例如,在我的例子中,我有两种构建类型(调试和发布)和两种 productFlavors,导致 4 个应用程序具有不同的包名称:
- 完整调试:com.company.myapp.debug
- 完整发布:com.company.myapp
- demoDebug: com.company.myapp.demo.debug
- demo发布:com.company.myapp.demo
一个 google-services.json 文件涵盖了所有这些变体,应该将其放入您的 Android Studio 项目的应用程序模块中。