通常我打开--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
的垃圾邮件.
最佳答案
我终于找到了一种禁用 dex 输出的方法,仅此而已(Android Gradle Plugin ~1.2):
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)
}
}
}
这有点 hacky(反射(reflection)),但我发现没有公共(public) API 可以做到这一点,因为
mVerboseExec
value 在初始化语句中被初始化并且值被缓存。
关于android - 如何在 Gradle Android 中禁用 dex 日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29922803/