【发布时间】:2019-01-15 04:48:33
【问题描述】:
我需要有关使用 firebase 和 android 设置 dev-staging-prod 的指导,并在服务器端实现完全数据隔离,并能够通过 android 支持相同的功能。另外,我将拥有构建的调试和发布版本。由于firebase端的包名+ SHA约束,我被卡住了。很明显,在 firebase 中,您可以在两个项目中拥有相同的 SHA-1,但应用程序的包名称(也称为“应用程序 ID”)必须不同。同样,您可以拥有两个具有相同包名称的项目,但不能向它们添加任何相同的 SHA-1。
必须具备: 所有三种环境的数据隔离 我使用 Firebase 控制台在我的帐户下创建了 3 个 firebase 项目。 1) 项目开发 2) 项目阶段 3) 项目产品
我也想在Android中支持 1) 调试 2) 发布模式
我有一个工程师团队,他们将推动开发,一个精选的团队推动登台和生产。
对于开发人员隔离,我可以让开发人员使用他们的沙盒帐户,从而解决 SHA 密钥问题。
Staging/Prod:但是我如何解决 staging/prod 问题,因为包名称是相同的。我是否必须添加另一个后缀才能使 Firestore 不会抱怨?对于调试和生产,我有添加 applicationIdSuffix 的规则。
包名将是 com.mycompany.productname。
发布将在生产中。在 dev 和 staging 中调试。
在 Android 中,我计划将这样的风格指向 google_services.json,以便处理我的应用程序的服务器端维度。 应用程序/ 源/ 主要的/ 开发/ google-services.json(仅适用于开发人员) 质量保证/ google-services.json(仅用于 QA) 产品/ google-services.json(仅用于产品)
并相应地更新安卓应用等级文件
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix '.debug'
}
}
// Specifies the flavor dimensions.
flavorDimensions "server"
productFlavors {
dev {
dimension "server"
}
staging {
dimension "server"
}
prod {
dimension "server"
}
}
我现在如何管理 SHA 密钥,因为对于应用程序 ID(包名称),只允许使用一个 SHA 密钥。
包名和SHA-1的组合必须是唯一的
【问题讨论】:
-
仅供参考,您将“Firestore”(云托管的 nosql 数据库)与“Firebase”(Google 的移动应用程序开发平台)混为一谈。 Firestore 是 Firebase 旗下的一款产品。在整个问题中,您应该使用 Firebase 而不是 Firestore。
标签: android firebase android-gradle-plugin