gpt4 book ai didi

android - 组织 android + firebase 项目 + 云功能进行开发阶段生产

转载 作者:行者123 更新时间:2023-12-05 00:16:52 24 4
gpt4 key购买 nike

我需要有关使用 firebase 和 android 设置 dev-staging-prod 的指导,并在服务器端实现完全数据隔离,并能够通过 android 支持相同的功能。另外,我将有构建的调试和发布版本。由于 firebase 端的 packagename + SHA 约束,我陷入困境。很明显,在 firebase 中,您可以在两个项目中使用相同的 SHA-1,但应用程序的包名称(也称为“应用程序 id”)必须不同。同样,您可以有两个具有相同包名称的项目,但它们不能添加任何相同的 SHA-1。

必须具备:所有三种环境的数据隔离我使用 Firebase 控制台在我的帐户下创建了 3 个 Firebase 项目。1) 项目开发2)项目阶段3)项目产品

我也想要 Android 支持1)调试2) Release模式

我有一个工程师团队将插入开发,一个精选的团队将插入登台和生产。

对于开发隔离,我可以让开发人员使用他们的沙箱帐户,从而解决 SHA key 问题。

Staging/Prod:但是由于包名称相同,我该如何解决 staging/prod 问题。我是否必须添加另一个后缀,以便 firestore 不会提示?对于调试和生产,我有添加 applicationIdSuffix 的规则。

包名称将为 com.mycompany.productname。

将在产品中发布。在开发和登台中进行调试。

在 Android 中,我计划使用这样的风格来指向 google_services.json,以便处理我的应用程序的服务器端维度。 应用程序/ 源代码/ 主要的/ 开发/ google-services.json(仅适用于开发人员) 质量保证/ google-services.json(仅用于质量检查) 产品/ google-services.json(仅适用于产品)

并相应地更新Android应用程序等级文件

   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 key ,因为对于应用程序 ID(程序包名称)来说,只允许有一个 SHA key 。

The combination of package name and SHA-1 must be unique

最佳答案

以下是 Google 的 Doug 的评论和我的原始帖子的摘要。

第 1 步)Firebase 控制台:创建针对不同环境的三个项目,即:dev |舞台|生产

第 2 步)沙盒项目的开发工作开发人员注意事项:开发人员不必像其他一切一样。每个开发人员都可以在自己的控制下拥有自己的项目,以避免破坏彼此的工作让每个开发人员使用他们的沙盒项目(免费帐户)。

第 3 步)使用调试版本创建暂存环境,无需签名登台注意事项:在开发和登台中调试构建。无需签名。

第 4 步)在产品中签署版本生产注意事项:与您信任的团队成员共享您的专用签名 key ,以便他们可以部署手动签名的应用程序,而不必为每个项目定义多个应用程序。(请记住,您可以在两个项目中拥有相同的 SHA-1,但应用程序的包名称(也称为“应用程序 id”)必须不同。同样,您可以拥有两个具有相同包名称的项目,但它们可以没有添加任何相同的 SHA-1。包名和SHA-1的组合必须是唯一的)

第 5 步)使用产品风格与 Android SDK 集成与 Firebase 项目集成:下载这 3 个项目的 google-services.json 文件,并使用下面的 build.gradle 文件(模块:app)将它们存储在服务器维度目录中。

第 6 步)使用 Blaze 与第三方集成:与第三方服务集成:将 Firebase 项目升级到 Blaze 要求。但是,如果我们需要使用一些第三方服务等,您需要让他们将您添加为项目的所有者,然后使用您帐户的账单信息将他们的项目升级到 Blaze。这样,开发人员在对他们的工作进行单元测试时就不会破坏彼此的数据。

第 7 步)验证您的成绩文件应用程序的 Android gradle 文件:

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"
}
}

第 8 步)验证您的 android 目录和 google-service.jsonAndroid 中适应各种风格的目录结构:将 google-services.json 从 firebase 控制台拖放到这些目录中。

app/
src/
main/
dev/
google-services.json (for dev only)
qa/
google-services.json (for qa only)
prod/
google-services.json (for prod only)

步骤9)根据环境上传云函数现在要管理我的云功能,继续使用不同的项目环境,这样您就可以避免生产或暂存数据轻易损坏。云功能将部署到暂存和生产中。

对于开发环境,由于所有开发人员都将在沙箱模式下创建自己的项目,因此他们必须复制一些配置才能使项目正常运行,例如存储 Assets 、部署所需的云功能等。单独控制多个项目需要单独部署。

步骤 10) 计划 future :使用 CI/CD 系统进行 staging-prod。根据 doug:强制通过单个 CI/CD 系统进行所有部署,该系统知道这些项目的凭据,并且仅在成功构建并通过测试后才进行更改。 IMO,对于来自较大团队的个人来说,每个人都有权访问特殊目的项目通常是 Not Acceptable 。

引用:持续交付 (CD) 持续交付实际上是 CI 的扩展,其中软件交付过程进一步自动化,以便随时轻松、自信地部署到生产中

关于android - 组织 android + firebase 项目 + 云功能进行开发阶段生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51737903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com