我有两种产品口味和三种构建类型。
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
qa {
applicationIdSuffix ".qa"
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
old {
applicationId "com.companyname.old"
buildConfigField "String", "contentProvider", '"com.companyname.android.mobile.contentprovider"'
resValue "string", "content_provider_authority", '"com.companyname.android.mobile.contentprovider"'
}
new {
applicationId "com.companyname.new"
buildConfigField "String", "contentProvider", '"' + applicationId + '.contentprovider"'
resValue "string", "content_provider_authority", '"' + applicationId + '.contentprovider"'
}
}
有没有办法可以根据产品风味改变content_provider_authority的resValue,但是对于变体?我希望所有产品版本的构建都使用应用程序ID +“。contentprovider”但是对于我们的产品风味旧,如果调试或发布如上所示使用硬编码字符串,但增强它以便为qa构建使用不同的硬编码字符串类型。
答案 0 :(得分:0)
感谢Selvin
的评论,这段代码对我有用productFlavors {
red {
ext {
googleMapsKey = [debug: "AIza4115643435", release: "AIzaXXXXXXXXXX"]
}
}
blue {
ext {
googleMapsKey = [debug: "AIza6363474341", release: "AIzaXXXXXXXXXX"]
}
}
applicationVariants.all { variant ->
def flavor = variant.productFlavors[0]
variant.resValue "string", "google_maps_key", "\"${flavor.ext.googleMapsKey[variant.buildType.name]}\""
}
}
答案 1 :(得分:0)
请注意,您的name
和main/res/values/strings.xml
上的build.gradle产品风味定义不能使用相同的字符串resValue
,否则,该版本将抱怨duplicate
资源
让我们假设您要更改app_name
字符串资源以适应不同的产品口味。您可以在app/build.gradle
上插入/编辑以下代码。
flavorDimensions "default"
productFlavors{
production {
dimension "roadmap"
applicationId "com.yourbundleid"
versionCode 1
versionName "0.1.0"
resValue "string", "app_name", 'YourAwesomeApp'
}
beta {
dimension "roadmap"
applicationIdSuffix ".beta"
versionNameSuffix "-beta"
versionCode 1
versionName "0.1.0"
resValue "string", "app_name", 'YourAwesomeApp BETA'
}
dev {
dimension "roadmap"
applicationIdSuffix ".dev"
versionNameSuffix "-dev"
versionCode 1
versionName "0.1.0"
resValue "string", "app_name", 'YourAwesomeApp DEV'
}
}