为androidTest增加targetSdkVersion

时间:2017-02-13 16:41:49

标签: android testing gradle

目前我正面临一个我无法解决的问题。由于一个错误,我必须将较低的targetsdkVersion设置为25(这是该帖子时最大可能的目标版本)

它的解决方案可能需要我很长时间才能解决,因此同时我想为生产构建设置较低的targetSdkVersion,并为测试设置25(androidTest变体)。

我知道我可以通过添加新口味来实现,但我想避免这种情况。

我的问题是,如何为androidTest设置不同的targetSdkVersion而不是其他变种/配置?

2 个答案:

答案 0 :(得分:1)

显然没有办法实现它。我最终不得不产生如下新口味:

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变体,但是如果不需要它我可以写下面的内容将目标25设置为所有调试变体:

android {
    def defaultTargetSdk = 24
    def androidTestTargetSdk = 25

    defaultConfig {
        targetSdkVersion defaultTargetSdk
    }

    buildTypes {
        debug {    
            defaultConfig {
                minSdkVersion androidTestTargetSdk
            }
        }
    }
}

答案 1 :(得分:0)

taargeted sdk level文件中为manifest<?xml version="1.0" encoding="utf-8"?> <manifest> <uses-sdk android:minSdkVersion="3" /> //replace 3 with required minimum version <uses-sdk android:targetSdkVersion="8" /> //replace 8 with required target version </manifest> 添加以下代码,如下所示,

width: parent.width