目前,我正面临一个无法解决的问题。由于存在错误,我必须将targetskVersion设置为较低的25(本文发布时的最大可能目标版本)
它的解决方案可能会花费我很多时间来解决,因此与此同时,我想为生产版本设置较低的targetSdkVersion,而为tesing设置较低的targetSdkVersion(androidTest变体)。
我知道我可以通过添加新的口味来做到这一点,但我想避免这种情况。
我的问题是,我该如何为androidTest设置一个与其他变体/配置不同的targetSdkVersion?
最佳答案
显然,没有办法实现它。我终于不得不产生一种新的味道,如下所示:
android {
def defaultTargetSdk = 24
def androidTestTargetSdk = 25
defaultConfig {
targetSdkVersion defaultTargetSdk
}
productFlavors {
target24 {
}
target25 {
targetSdkVersion androidTestTargetSdk
}
}
// Remove target25Release as it's used only for testing purpose and wont be not needed on production.
variantFilter { variant ->
def buildTypeName = variant.buildType.name
def flavorName = variant.getFlavors().get(0).name
if (buildTypeName.equals('release') && flavorName.startsWith('target25')) {
variant.setIgnore(true);
}
}
}
因为我已经需要带有debug buildType和target 24的变量,所以我只删除了target25Release变量,但是如果不需要,我可以编写以下代码将target 25设置为所有调试变量:
android {
def defaultTargetSdk = 24
def androidTestTargetSdk = 25
defaultConfig {
targetSdkVersion defaultTargetSdk
}
buildTypes {
debug {
defaultConfig {
minSdkVersion androidTestTargetSdk
}
}
}
}