Как настроить Proguard с помощью Gradle?

Недавно я переключился на Android Studio/ Gradle, и мне интересно, как ProGuard можно настроить в build.gradle script. Я новичок в Gradle, но я подумал, что настройка задачи Proguard была бы хорошей идеей (как описано в проектной документации Proguard.

Я хочу настроить Proguard для сохранения отображения в разных файлах для разных продуктов с настройкой "распечатка"

task myProguardTask(type: proguard.gradle.ProGuardTask) {
     printmapping file("test.txt")
}

но он сбой при выполнении задачи с помощью

Gradle: Execution failed for task ':module:proguardFlavorVariant'.
    > proguard.ConfigurationParser.<init>(Ljava/io/File;Ljava/util/Properties;)V

В новых версиях Gradle 'android'-plugin Proguard кажется включенным, и я думаю, что это может быть причиной, почему настройка задачи Proguard, как указано в документации Proguard, не работала. Но я не нашел никакой документации по этой теме о том, как это сделать с новым Android-gradle -plugin.

Спасибо за вашу помощь!

Ответ 1

Proguard встроен в плагин Android- Gradle, и вам не нужно настраивать его как отдельную задачу. Документы:

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard

Являются ли ваши вкусы такими разными, что вам действительно нужны разные конфигурации ProGuard? Я бы подумал, что в большинстве случаев у вас может быть одна конфигурация, которая может их охватить.

EDIT:

Если вы хотите изменить правила ProGuard для разных вкусов, DSL для Android Gradle позволяет это сделать. Образец в документах показывает, как это сделать:

android {
    buildTypes {
        release {
            // in later versions of the Gradle plugin runProguard -> minifyEnabled
            minifyEnabled true
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }

    productFlavors {
        flavor1 {
        }
        flavor2 {
            proguardFile 'some-other-rules.txt'
        }
    }
}

Это должно обрабатывать ваш прецедент, если вы не ищете способ автоматически определить значение proguardFile на основе имени аромата без необходимости его вручную; вы можете сделать это с помощью некоторых пользовательских сценариев Groovy.