【问题标题】:How to disable dex logging in Gradle Android?如何在 Gradle Android 中禁用 dex 日志记录?
【发布时间】:2015-04-28 14:58:18
【问题描述】:

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

当我用--info 运行assembleRelease 时,我从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 的垃圾邮件。

【问题讨论】:

    标签: android gradle android-gradle-plugin dex


    【解决方案1】:

    我终于找到了一种禁用 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(反射),但我发现没有公共 API 可以做到这一点,因为 mVerboseExec 值在初始化短语中被初始化并且该值被缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 2020-01-17
      • 2016-07-04
      • 2023-02-02
      • 1970-01-01
      • 2011-01-08
      • 2014-07-30
      相关资源
      最近更新 更多