Android 和 Firebase : different environments for different testing cycles

标签 android firebase firebase-realtime-database

我目前正在开发我的第一个 Android 应用程序,它是我已经开发的 iOS 应用程序的 Android/Kotlin 版本。我创建了 3 个不同的 Firebase 项目,为每个环境提供独立的实时数据库实例:

  • com.myapp.debug 仅供我用于开发
  • com.myapp.beta 应用于 alpha 和 beta 测试
  • com.myapp 应该只用于将在 Play 商店公开发布的生产应用

当我考虑在我的 Android 应用程序中插入这 3 个环境时,我读到我应该为此使用产品风格,所以这里是我配置构建的方式:

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.derbigum.approofreferences"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    flavorDimensions "dev", "qa", "prod"
    productFlavors {
        dev {
            dimension "dev"
            applicationId "com.derbigum.approofreferences.debug"
        }
        qa {
            dimension "qa"
            applicationId "com.derbigum.approofreferences.beta"
        }
        prod {
            dimension "prod"
            applicationId "com.derbigum.approofreferences"
        }
    }
}

当然,我在 src 中创建了相应的子文件夹来存储我为每个项目获得的各种版本的 google-services.json。

我用它进行了所有的开发,到目前为止它一直有效:开发数据是在正确的数据库中创建的。

但现在我想做第一个封闭的 alpha 版本,但我对如何生成我的 APK 感到困惑。我只有 2 个构建变体:

  • devQaProdDebug
  • devQaProdRelease

也许我在配置 flavorDimensions 时犯了错误?也许是别的原因。有人可以帮我弄清楚我的设置是否正常吗?如果可以,我应该如何构建我的应用程序的封闭 alpha 版本并将其发布给我的内部用户进行测试?

最佳答案

我认为你在这里想要的不是三个环境的三个维度,而是环境的一个维度,具有三种口味:

flavorDimensions "env"
productFlavors {
    dev {
        dimension "env"
        applicationId "com.derbigum.approofreferences.debug"
    }
    qa {
        dimension "env"
        applicationId "com.derbigum.approofreferences.beta"
    }
    prod {
        dimension "env"
        applicationId "com.derbigum.approofreferences"
    }
}

这将使您为每个环境构建变体。

关于Android 和 Firebase : different environments for different testing cycles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48978788/

相关文章:

node.js - 如何只获取子firebase云函数的一个值?

android - 将大图像放入与原始图像质量一样好的小 ImageView 中?

firebase - Flutter参数类型 'Object?'无法分配给参数类型 'Map<String, dynamic>'

ios - 无法复制和解析 Apple 提交的 EXC_CRASH SIGKILL

firebase - 'Firebase init'命令未创建package.json,index.js和function文件夹

swift - 使用 nextObject() 枚举集合没有按预期工作?

android - 字段 'Signature' 的值不正确 : value is 662655099 but 67324752 expected

java - 创建类似 Facebook 的菜单

android - 提高我的最低 API 级别的更好方法?

android - 过滤具有权限要求的 Activity