2015-04-28 51 views
0

通常我打開--info查看proguardRelease的輸出或查看某個任務執行或未執行的原因。如何禁用Gradle Android中的dex日誌記錄?

當我運行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的垃圾郵件。

回答

0

我終於找到了一種方法來禁用DEX輸出,只是那(Android的搖籃插件〜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) 
     } 
    } 
} 

這是一個有點哈克(反射),但我沒有發現任何公共API來做到這一點監守在初始化短語中初始化mVerboseExec值,並緩存該值。