想象一下这个设置:
android {
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
productFlavors {
foo {
applicationId defaultConfig.applicationId + '.foo'
}
}
}
如何设置动态字符串值,例如
resValue "string", "package_name", applicationId
以便它包含用于调试版本的applicationIdSuffix
?
如果我将其添加到defaultConfig
,则设置我的defaultConfig的applicationId。如果我将其添加到flavor配置中,则会遗漏applicationIdSuffix
(此级别为null
)。
任何提示?
答案 0 :(得分:2)
关于applicationIdSuffix的一个很酷的部分是你可以在版本和构建类型中使用它。看看这个:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "dev.bmax.suffixtext"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix '.debug'
}
}
productFlavors {
prod {
applicationIdSuffix '.prod'
}
mock {
applicationIdSuffix '.mock'
}
}
}
现在,当我构建我的'prodDebug'变体时,最终的应用程序ID是'dev.bmax.suffixtext.prod.debug',如果我正确理解你的问题,这就是你想要的。
修改
您可以在Gradle任务中访问变体的名称,如下所示:
applicationVariants.all { variant ->
// Use 'variant.name'
}
Gradle Android插件版本0.14.3增加了对特定版本BuildConfigField / resValue的支持:
applicationVariants.all { variant ->
variant.resValue "string", "name", "value"
}