配置
Mutlidex
已启用。MinifyEnabled
仅在release
中为true
。
渐变构建脚本:
buildscript {
repositories {
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "com.android.tools.build:gradle:2.1.3"
}
}
Android DSL 配置:
android {
defaultConfig {
multiDexEnabled true
}
signingConfigs {
debug {
}
release {
}
}
buildTypes {
debug {
versionNameSuffix ".debug"
}
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFile getDefaultProguardFile("proguard-android.txt")
proguardFile "proguard-project.txt"
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
dexOptions {
jumboMode true
javaMaxHeapSize "4g"
}
dataBinding {
enabled = true
}
}
gradlew assembleDebug
的输出:
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources
:app:prePackageMarkerForDebug
:app:transformClassesWithJarMergingForDebug
:app:collectDebugMultiDexComponents UP-TO-DATE
:app:transformClassesWithMultidexlistForDebug
ProGuard, version 5.2.1
Reading program jar [/<>/build/intermediates/transforms/jarMerging/debug/jars/1/1f/combined.jar]
Reading library jar [/<>/build-tools/23.0.3/lib/shrinkedAndroid.jar]
Preparing output jar [/<>/build/intermediates/multi-dex/debug/componentClasses.jar]
Copying resources from program jar [/<>/build/intermediates/transforms/jarMerging/debug/jars/1/1f/combined.jar]
:app:transformClassesWithDexForDebug
:app:mergeDebugJniLibFolders UP-TO-DATE
:app:transformNative_libsWithMergeJniLibsForDebug UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForDebug UP-TO-DATE
:app:validateDebugSigning
:app:packageDebug
:app:zipalignDebug
:app:assembleDebug
BUILD SUCCESSFUL
Total time: 1 mins 0.285 secs
我试过:
buildTypes {
debug {
debuggable true
minifyEnabled false
}
release {
debuggable false
minifyEnabled true
}
}
引用资料:
最佳答案
当使用 multidex 将您的类拆分为多个 dex 文件时,Android 插件将在内部使用 ProGuard 来确定哪些类必须保留在主 classes.dex 中。
此执行与您自己的规则或 minifyEnabled 标志无关,可以安全地忽略,尽管日志输出可能很烦人。要禁止显示日志消息,您可以将以下内容添加到您的 build.gradle 中:
tasks.whenTaskAdded { task ->
if (task.name.startsWith("transformClassesWithMultidexlistFor")) {
task.logging.level = LogLevel.ERROR
}
}
关于android - 为什么混淆器在我的调试 multidex 构建中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39279187/