当前位置: 首页 > 知识库问答 >
问题:

对于未显式编写脚本的buildType,minifyEnabled的默认设置是什么?

凌善
2023-03-14

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

在最初的Eclipse环境中,他们使用Proguard作为发布模式。

在Android Studio环境中,这在构建中被转换为以下内容。gradle脚本(由导入,而不是由我):

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

我理解这意味着“在releasebuild中,使用Proguard.cfg启用Proguard的minify”。

然而,问题是缩小似乎也发生在非发布构建(即调试)中!

这怎么可能?

调试生成的minifyEnabled默认值是多少?

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

我正在发布整个版本。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()
    }
}

我在这里找不到任何可以解释在调试构建中强制缩小的东西。

更新2:怀疑应用程序的构建(debug)和它所依赖的模块(release?)不匹配,我还检查了左面板上的Build Variant视图。所有这些都清楚地显示了调试。

更新3:我似乎在Android Gradle中遇到了一个漏洞/限制?

当应用程序以debug模式构建时,我真的需要在debug模式下构建的所有模块。

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

共有2个答案

齐思淼
2023-03-14

调试生成的minifyEnabled默认值是多少?

对于所有构建类型,mini fyEnable的默认值为false。参考。

然而,问题是缩小似乎也发生在非发布构建(即调试)中!

这怎么可能?

您的调试构建得到了proguard处理,可能是通过其他定义,或者您正在使用的外部构建脚本。

在更新的问题中,您有一个库项目和一个应用程序项目,它使用一个缩小的库,甚至用于调试构建。这是一个“特征”。要找到解决方案,请考虑问题报告中也提到的以下内容:

通过将以下内容添加到库项目的构建中,来构建库项目的所有变体。格雷德尔

android {
    publishNonDefault true
}

在应用程序项目中,选择构建类型特定的依赖项

dependencies {
    releaseCompile project(path: ':theotherproject', configuration: 'release')
    debugCompile project(path: ':theotherproject', configuration: 'debug')
}
朱建弼
2023-03-14

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

然而,目前(截至2015年4月24日),多模块项目并非如此,其中一些模块(包括应用程序)依赖于其他模块。这是由于bug#52962导致生成类型不会传播到库中——它们总是作为发行版生成。

我们非常欢迎您提出解决此漏洞的建议或其修复通知。

 类似资料:
  • 问题内容: UTF-8是Java中的默认编码吗? 如果没有,我怎么知道默认使用哪种编码? 问题答案: JVM的默认字符集是运行它的系统的默认字符集。对此没有特定的值,并且通常不应将默认编码视为任何特定的值。 可以在运行时通过对其进行访问,尽管这对你有用,但实际上你应该始终在明确指定编码的情况下这样做。

  • 问题内容: 现在,我正在用自己的语言编写一个小的Java应用程序,其中只有几个maven pom.xml文件。我想使我所有的maven软件包都可以使用jdk 1.6进行编译,而如果没有在每个POM上手动设置它的话,我将找不到一个很好的方法-我讨厌复制粘贴 在我生成的每个pom.xml文件中。 有没有更简单的方法来解决此问题? 问题答案: 创建一个具有所需的编译器设置(以及任何其他默认设置)的仅po

  • 问题内容: 一个Kibana新手想知道如何以编程方式设置默认的索引模式,而不是像在https://www.elastic.co/guide/en/上提到的那样在第一次查看Kibana UI时通过Web浏览器在Kibana UI上设置它。kibana / current / setup.html 问题答案: Elasticsearch将所有Kibana元数据信息存储在索引下。Kibana配置(例如和

  • 如果我们打开swagger editor网站https://editor.swagger.io/,它有一个默认的swagger示例。前几行是 一般来说,我们知道有两种类型的大摇大摆的文件。YAML和JSON。当然,默认的不是JSON。默认值与YAML非常相似,但事实并非如此。因为在菜单中,我们可以选择“转换为YAML”,它将转换为

  • 问题内容: 如何通过编程正确设置JVM(1.5.x)使用​​的默认字符编码? 我读过,这-曾经是使用旧JVM的方法。由于没有理由,我没有那么奢侈。 我试过了: 并且该属性被设置,但似乎不会导致下面的最终调用使用UTF8: 问题答案: 不幸的是,必须在JVM启动时指定该属性。通过输入你的主要方法时,编码中使用的字符由和默认的构造函数,并已被永久缓存。 正如指出的那样,在这种特殊情况下, 可以使用环境

  • 使用axios,我尝试为所有请求设置默认标头身份验证令牌。但默认情况下它没有被发现,并且对于任何其他api调用,“授权”没有在标头中设置。 这是一个常用文件 登录后,我像这样设置标题 但是当我调用任何其他API标头进行授权时,CountryApi.js所在的位置没有设置 Country.js是这个