2016-09-01 3 views
2

Конфигурация

  • Mutlidex включена.
  • MinifyEnabled является true в release только.

Gradle buildscript:

buildscript { 
    repositories { 
     maven { url "https://plugins.gradle.org/m2/" } 
    } 

    dependencies { 
     classpath "com.android.tools.build:gradle:2.1.3" 
    } 
} 

Android конфигурации DSL:

android { 
    defaultConfig { 
     multiDexEnabled true 
    } 

    signingConfigs { 
     debug { 

     } 

     release { 

     } 
    } 

    buildTypes { 
     debug { 
      versionNameSuffix ".debug" 
     } 

     release { 
      signingConfig signingConfigs.release 
      minifyEnabled true 
      proguardFile getDefaultProguardFile("proguard-android.txt") 
      proguardFile "proguard-project.txt" 
     } 
    } 

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_7 
     targetCompatibility JavaVersion.VERSION_1_7 
    } 

    dexOptions { 
     jumboMode true 
     javaMaxHeapSize "4g" 
    } 

    dataBinding { 
     enabled = true 
    } 
} 

Выход из gradlew assembleDebug:

:app:compileDebugNdk UP-TO-DATE 
:app:compileDebugSources 
:app:prePackageMarkerForDebug 
:app:transformClassesWithJarMergingForDebug 
:app:collectDebugMultiDexComponents UP-TO-DATE 
:app:transformClassesWithMultidexlistForDebug 
ProGuard, version 5.2.1 
Reading program jar [/<>/build/intermediates/transforms/jarMerging/debug/jars/1/1f/combined.jar] 
Reading library jar [/<>/build-tools/23.0.3/lib/shrinkedAndroid.jar] 
Preparing output jar [/<>/build/intermediates/multi-dex/debug/componentClasses.jar] 
    Copying resources from program jar [/<>/build/intermediates/transforms/jarMerging/debug/jars/1/1f/combined.jar] 
:app:transformClassesWithDexForDebug 
:app:mergeDebugJniLibFolders UP-TO-DATE 
:app:transformNative_libsWithMergeJniLibsForDebug UP-TO-DATE 
:app:processDebugJavaRes UP-TO-DATE 
:app:transformResourcesWithMergeJavaResForDebug UP-TO-DATE 
:app:validateDebugSigning 
:app:packageDebug 
:app:zipalignDebug 
:app:assembleDebug 

BUILD SUCCESSFUL 

Total time: 1 mins 0.285 secs 

Я пробовал:

buildTypes { 
    debug { 
     debuggable true 
     minifyEnabled false 
    } 

    release { 
     debuggable false 
     minifyEnabled true 
    } 
} 

Ссылки:Почему proguard работает в моей debug multidex build?

+0

Вы пытались явно установить для параметра minifyEnabled значение false для отладочной сборки? –

ответ

2

При использовании multidex для разделения ваших классов на несколько файлов dex плагин Android будет использовать ProGuard, чтобы определить, какие классы должны храниться в основных классах.dex.

Это исполнение не имеет ничего общего с вашими собственными правилами или флагом minifyEnabled и может быть безопасно проигнорировано, хотя выход журнала может быть раздражающим. Чтобы подавить сообщения журнала, вы можете добавить следующее в свой build.gradle:

tasks.whenTaskAdded { task -> 
    if (task.name.startsWith("transformClassesWithMultidexlistFor")) { 
    task.logging.level = LogLevel.ERROR 
    } 
} 
+0

Спасибо за объяснение и расследование. Это работает. 'level' (' setLevel') устарел. Что мы должны использовать сейчас? –

0

Вы должны указать minifyEnabled false в типе debug сборки. Обычно он создается по умолчанию при создании нового проекта. Кажется, вы удалили его.

+0

'minifyEnabled' является' false' по умолчанию: http://stackoverflow.com/a/29847488/950427. Вы можете проверить через 'println android.buildTypes.debug.minifyEnabled'. –

+0

действительно ли это работает, когда вы добавляете ложный флаг в явном виде или все еще продолжает плохо себя вести? – AndroidMechanic

+0

Да, proguard все еще работает. Я считаю, что это ошибка: https://code.google.com/p/android/issues/detail?id=52962. –