对于未明确编写脚本的 buildType,minifyEnabled 的默认值是什么?

What is the default for minifyEnabled for buildType not explicitly scripted?

我将几个 eclipse 项目导入到 Android Studio (v1.1)。

在原来的Eclipse环境中,他们使用Proguard进行发布模式。

在 Android Studio 环境中,这在 build.gradle 脚本中被翻译成以下内容(通过导入,而不是我):

buildTypes {
    release {
        minifyEnabled true
        proguardFiles 'proguard.cfg'
    }
}

我理解这意味着"in release build, enable Proguard's minify, using proguard.cfg".

然而,问题是 minify 似乎也在非发布版本(即调试)中发生!

这怎么可能?

调试版本的 minifyEnabled 默认值是多少?


更新 1: 感谢下面的回答,我现在知道默认值是 false。这意味着其他东西正在构建在调试构建中缩小的各种模块。

我正在发布 整个 build.gradle 用于在调试版本中缩小的模块之一:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 8
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 8
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles 'proguard.cfg'
        }
    }
}

项目本身(即顶级)的整个 build.gradle 是:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

我在这里找不到任何可以解释在调试版本上强制执行 minify 的内容。


更新 2: 怀疑应用程序的构建 (debug) 与其依赖的模块 (release?) 不匹配,我还检查了左侧面板上的 Build Variant 视图。全部显示 debug 明确。


更新 3: 看来我点击了 a bug/limitation in Android-Gradle?

当应用程序以 debug 模式构建时,我确实需要所有模块以 debug 模式构建。

有什么办法可以解决这个问题吗?

What is the default for minifyEnabled for debug build?

对于所有构建类型,minifyEnabled 的默认值为 falseReference.

The problem, however, is that minify seems to be happening in non-release build (i.e. debug) as well!

How is this possible?

您的调试版本可能通过某处的其他定义或您正在使用的外部构建脚本获得混淆处理。


在您更新的问题中,您有一个库项目和一个使用缩小库的应用程序项目,甚至用于调试版本。这就是“特色”。对于解决方案,请考虑 issue report 中也提到的以下内容:

通过将以下内容添加到其 build.gradle 来构建库项目的所有变体:

android {
    publishNonDefault true
}

在应用程序项目中,选择具有

的构建类型特定依赖项
dependencies {
    releaseCompile project(path: ':theotherproject', configuration: 'release')
    debugCompile project(path: ':theotherproject', configuration: 'debug')
}

对于所有构建类型,minifyEnabled 的默认值为 false,如@laalto 所回答。

但是,目前(截至 2015 年 4 月 24 日),多模块 项目并非如此,其中一些模块(包括应用程序)是 dependent 依赖于其他模块。这是由于 bug #52962 导致构建类型 传播到库——它们总是构建为 RELEASE。

非常欢迎提供解决此错误的建议或有关其修复的通知。