我将几个eclipse项目导入Android Studio(v1.1)。
在最初的Eclipse环境中,他们使用Proguard进行发布模式。
在Android Studio环境中,这被转换为build.gradle
脚本中的以下内容(由导入,而非我):
buildTypes {
release {
minifyEnabled true
proguardFiles 'proguard.cfg'
}
}
我理解这意味着“在release
版本中,使用proguard.cfg启用Proguard的缩小”。
然而,问题是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()
}
}
我无法在这里发现任何可以解释在调试版本上强制缩小的内容。
更新2 :怀疑应用的构建版本(debug
)与其所依赖的模块(release
?)之间不匹配,我还检查了{{3}在左侧面板上查看。全部显示debug
明确。
更新3 :我似乎点击Build Variant了?
当应用程序以debug
模式构建时,我确实需要以debug
模式构建的所有模块。
我有什么想法可以解决这个问题吗?
答案 0 :(得分:13)
对于所有构建类型,minifyEnabled
的默认值为false
,正如@laalto回答的那样。
但是,目前(截至2015-04-24),多模块项目并非如此,其中某些模块(包括应用程序)依赖在其他模块上。这是由于bug #52962导致构建类型不传播到库 - 它们始终构建为RELEASE。
欢迎解决此错误或其修复通知的建议。
答案 1 :(得分:12)
minifyEnabled的默认调试版本是什么?
对于所有构建类型,minifyEnabled
的默认值为false
。 Reference
然而,问题是minify似乎也发生在非发布版本(即调试版)中!
这怎么可能?
您的调试版本可能会通过其他某个定义或您正在使用的外部构建脚本获得proguard处理。
在您更新的问题中,您有一个库项目和一个使用缩小库的应用程序项目,甚至用于调试版本。这是"功能"。对于解决方案,请考虑issue report中提到的以下内容:
通过将以下内容添加到其build.gradle
:
android {
publishNonDefault true
}
在应用程序项目中,使用
选择构建类型特定的依赖项dependencies {
releaseCompile project(path: ':theotherproject', configuration: 'release')
debugCompile project(path: ':theotherproject', configuration: 'debug')
}