首页 文章

为dev staging 生产环境 组织android firebase项目 Cloud 功能

提问于
浏览
0

我需要指导设置dev-staging-prod与firebase和android在服务器端的完全数据隔离以及通过android支持相同的能力 . 另外,我将拥有版本的调试和发布版本 . 我因为firebase端的packagename 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 .

发布将是prod . 在dev和staging中调试 .

在Android中,我计划将这样的风格指向google_services.json,以便处理我的应用程序的服务器端维度 . app / src / main / dev / google-services.json(仅适用于开发)qa / google-services.json(仅适用于qa)prod / google-services.json(仅适用于prod)

并相应更新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密钥,因为对于应用程序ID(包名称),只允许一个SHA密钥 .

包名称和SHA-1的组合必须是唯一的

2 回答

  • 0

    如果您只与那些应该能够部署到这些项目环境的人共享您的登台和发布签名密钥,这可能是最简单的 . 更好的是,您可以通过知道这些项目凭据的单个CI / CD系统强制执行所有部署,并且只有在通过测试的成功构建之后才进行更改 . 国际海事组织,对于大型团队中的每个人来说,每个人都可以访问特殊目的项目 .

  • 1

    以下是Google Doug和我原帖的评论摘要 .

    步骤1)Firebase控制台:创建 three projects for different environments 即:dev |升级| 生产环境

    步骤2)开发他们的沙箱项目注意事项 dev :Dev doesn 't have to be like everything else. Each developer could have their own project under their own control in order to avoid clobbering each others' work让每个开发人员使用他们的沙箱项目(免费帐户) .

    步骤3)创建一个临时环境使用调试版本而无需为 staging 签署注释:在开发和暂存中调试构建 . 无需签名 .

    步骤4)在 production 的产品说明中签署发布:与您信任的团队成员共享您的专用签名密钥,以便他们可以部署手动签名的应用程序,而无需为每个项目不必要地定义多个应用程序 . (请记住,您可以在两个项目中使用相同的SHA-1,但应用程序的包名称(也称为"application id")必须不同 . 同样,您可以拥有两个具有相同包名称的项目,但它们不能包含任何项目添加相同的SHA-1 . 包名和SHA-1的组合必须是唯一的)

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

    步骤6)使用Blaze与第三方集成: Integration w/3rd party service :将firebase项目升级到Blaze要求 . 但是,如果我们需要使用某些第三方服务等,您需要让他们将您添加为项目的所有者,然后将他们的项目升级到Blaze,并使用您的帐户's billing information. This way devs don' t clobber彼此数据,同时对其工作进行单元测试 .

    第7步)验证您的成绩档案 Android gradle file for app:

    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.json Directory structure in Android to accomodate the flavours :将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)根据环境 Now to manage my cloud functions 上传 Cloud 功能,继续使用不同的项目环境,这样可以避免 生产环境 或登台数据的轻易损坏 . Cloud 功能将部署到分段和 生产环境 .

    对于开发环境,因为所有开发人员都将在沙箱模式下创建自己的项目,他们将不得不复制一些配置以使项目正常工作,例如存储资产,部署所需的 Cloud 功能等 . 个别项目控制需要个人部署 .

    步骤10)计划每个道路 Future: Use CI/CD system for staging-prod. :通过知道这些项目的凭据的单个CI / CD系统强制所有部署,并且只有在通过测试的成功构建之后才进行更改 . 国际海事组织,对于大型团队中的每个人来说,每个人都可以访问特殊目的项目 .

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

相关问题