如何在Gradle Android中禁用dex日志记录?

时间:2015-04-28 14:58:18

标签: android gradle android-gradle dex

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

当我使用assembleRelease运行--info时,我收到来自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的垃圾邮件。

1 个答案:

答案 0 :(得分:0)

我终于找到了一种禁用dex输出的方法(Android Gradle Plugin~1.2):

List<object> dataList = data.Select(d =>  d == null ? null : (object)d).ToList();

它有点hacky(反射),但我发现没有公共API来执行此操作,因为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) } } } 值在初始化短语中初始化并且值已缓存。