目前,我正面临一个无法解决的问题。由于存在错误,我必须将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
            }
        }
    }
}

10-07 20:13