14

如何仅在调试模式下使用特定的 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

4 回答 4

11

有一种更好的方法可以在没有Product Flavours或挂钩到构建流程的情况下做到这一点。例子:

  buildTypes {
     debug {
       defaultConfig.minSdkVersion 19
       defaultConfig.vectorDrawables.useSupportLibrary = true
       defaultConfig.multiDexEnabled = true
     ...
于 2019-07-24T10:00:34.340 回答
3

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

我认为没有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
    }
}
于 2017-06-09T11:25:20.617 回答
3

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

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
    }
}
于 2018-05-17T07:46:47.933 回答
1

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

minSdkVersion 21

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

和中提琴,它会起作用的。

于 2020-12-15T16:18:58.590 回答