В чем разница между "minifyEnabled" и "useProguard" в плагине Android для Gradle?

Я вижу, что плагин Android для Gradle имеет minifyEnabled собственность, а также useProguard свойства следующим образом:

android {
    buildTypes {
        debug {
            minifyEnabled true
            useProguard false
        }
        release {
            minifyEnabled true
            useProguard true
        }
    }
}

в чем разница между этими двумя свойствами? Или, скорее, в чем смысл каждого из них?

2 ответов


цитата из tools.android.com:

встроенный психиатру

версия 2.0 Android плагин для Gradle судов с экспериментальным встроенный шринкер кода, который можно использовать вместо ProGuard. Этот встроенный shrinker поддерживает быстрые инкрементные прогоны и предназначен для ускорения до итерации циклов. Его можно включить, используя следующий код фрагмент:

android {
    buildTypes {
        debug {
            minifyEnabled true
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt')
        }
    }
}

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

В отличие от ProGuard, мы поддерживаем использование встроенного шринкера вместе с Мгновенный запуск: в зависимости от проекта, он может значительно уменьшиться начальное время сборки и установки. Любые методы, которые становятся доступными после изменения кода появится как вновь добавленный в программу и предотвращать мгновенный запуск hotswap.


просто включить minifyEnabled будет иметь код, оптимизированный и запутанный. Это потому что useProguard true по умолчанию, поэтому нет необходимости устанавливать его явно.

Смотрите также: запутывание в Android Studio