如何在Gradle Android中禁用dex登录?

如何在Gradle Android中禁用dex登录?,android,gradle,android-gradle-plugin,dex,Android,Gradle,Android Gradle Plugin,Dex,通常我打开--info来查看proguardRelease的输出,或者查看某个任务执行或未执行的原因 当我用--info运行assembleerelease时,我从dexRelease收到一个巨大的垃圾邮件,其中包含数千行,如: processing archive I:\build\intermediates\classes-proguard\release\classes.jar... processing android/support/v7/appcompat/R.class... ig

通常我打开
--info
来查看
proguardRelease
的输出,或者查看某个任务执行或未执行的原因

当我用
--info
运行
assembleerelease
时,我从
dexRelease
收到一个巨大的垃圾邮件,其中包含数千行,如:

processing archive I:\build\intermediates\classes-proguard\release\classes.jar...
processing android/support/v7/appcompat/R.class...
ignored resource META-INF/LICENSE.txt
processing android/support/v4/app/Fragment.class...

我认为这些行应该是
--debug
级别,但我不知道如何修改它。我希望像往常一样拥有所有其他输出,但是忽略来自
dexRelease

的垃圾邮件。我终于找到了一种禁用dex输出的方法,就是这样(Android Gradle插件~1.2):

这有点粗糙(反射),但我没有发现可以这样做的公共API,因为
mVerboseExec
值在初始化阶段被初始化,并且该值被缓存

import com.android.build.gradle.api.ApplicationVariant;
import com.android.builder.core.AndroidBuilder;
import java.lang.reflect.Field;

afterEvaluate {
    project.android.applicationVariants.all { ApplicationVariant variant ->
        if (!variant.dex) return;
        Field v = AndroidBuilder.class.getDeclaredField("mVerboseExec")
        v.accessible = true

        boolean originalVerbose;
        variant.dex.doFirst {
            originalVerbose = v.get(variant.androidBuilder)
            v.set(variant.androidBuilder, false)
        }
        variant.dex.doLast {
            v.set(variant.androidBuilder, originalVerbose)
        }
    }
}