将所需名称传递为buildConfigField FIREBASE_APP_NAME 或R.string.firebase_app_name:
android {
// default configuration, don't touch.
defaultConfig {
buildConfigField "String", "FIREBASE_APP_NAME", "\"default\""
resValue("string", "firebase_app_name", "default")
}
buildTypes {
debug {}
staging {}
release {}
}
sourceSets {
main {} // default source-set
foo {}
bar {}
}
productFlavors {
foo {
buildConfigField "String", "FIREBASE_APP_NAME", "\"foo\""
resValue("string", "firebase_app_name", "foo")
}
bar {
buildConfigField "String", "FIREBASE_APP_NAME", "\"bar\""
resValue("string", "firebase_app_name", "bar")
}
}
}
除非组合应用名称,否则您可以配置 productFlavors 或 buildTypes。但是,可以使用应用程序包中的名称来实例化FirebaseApp:
FirebaseApp.getInstance(BuildConfig.FIREBASE_APP_NAME);
或者string资源:
FirebaseApp.getInstance(getString(R.string.firebase_app_name));
还有一个android.environments Gradle 插件用于生成这些buildConfigField。
同样,可以只使用正确的res 目录中的string 资源。当productFlavors 和sourceSets 配置同名(当然还有对应的目录和文件)时,可以用string 资源配置其余所有资源,而不是Android DSL。
Gradle sourceSets 允许的不仅仅是备用 string 资源...