2015-04-28 5 views
0

Обычно я включаю --info, чтобы увидеть вывод proguardRelease или посмотреть, почему определенная задача выполнялась или не выполнялась.Как отключить регистрацию dex в Gradle Android?

Когда я бегу 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

я, наконец, нашел способ отключить выход Декс и только что (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, чтобы сделать это becuase значение mVerboseExec инициализируется в фразе инициализации, и значение кэшируется.

Смежные вопросы