我目前正在开发我的第一个 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/