仅在调试模式下使用特定的minSdkVersion

时间:2016-09-20 12:37:11

标签: android gradle android-min-sdk

如何仅在调试模式下使用特定的minSdkVersion? 我想将minSdkVersion 21用于调试模式,但minSdkVersion 15用于发布。我不想用这种口味,因为会给你带来麻烦。

我认为可能是这样(但不起作用):

defaultConfig {
        applicationId "blacktoad.com.flapprototipo"
        minSdkVersion 15

        debug{
            minSdkVersion 21
        }

        targetSdkVersion 23
        versionCode 42
        versionName "1.72"

        multiDexEnabled true
    }

4 个答案:

答案 0 :(得分:2)

  

我不想为此使用口味,因为会给你带来麻烦。

我认为你可以在没有productFlavors的情况下做到这一点。我将这个答案留给了那些使用productFlavors没有问题的人。 https://developer.android.com/studio/build/multidex.html#dev-build

基本上您需要做的就是使用不同的productFlavors声明minSdkVersion

productFlavors {
    dev {
        // Enable pre-dexing to produce an APK that can be tested on
        // Android 5.0+ without the time-consuming DEX build processes.
        minSdkVersion 21
    }
    prod {
        // The actual minSdkVersion for the production version.
        minSdkVersion 14
    }
}

答案 1 :(得分:2)

我花了将近一天的时间来创建这个脚本。请注意这个纪念品,但只能将此作为最后的手段

android.applicationVariants.all { variant ->

    //Making specific variant disablements for faster build
    if (variant.buildType.name.contains("debug")) {
        println "Making min version to 21 and disabling multidex"
        variant.mergedFlavor.setMultiDexEnabled false

        def versionMin = new com.android.builder.core.DefaultApiVersion(21)
        variant.mergedFlavor.setMinSdkVersion versionMin
    }
}

答案 2 :(得分:0)

有一种更好的方法可以做到,而无需产品风味或加入构建流程。 示例:

  buildTypes {
     debug {
       defaultConfig.minSdkVersion 19
       defaultConfig.vectorDrawables.useSupportLibrary = true
       defaultConfig.multiDexEnabled = true
     ...

答案 3 :(得分:0)

我知道这是一个老问题,但是有一个非常简单的解决方案,即使没有设置单独的口味。
只需替换一行即可;

minSdkVersion 21

使用

minSdkVersion gradle.startParameter.taskNames.toString().contains("Release")?16:21

和中提琴,它将起作用。