Какая разница между "minifyEnabled" и "useProguard" в Android Plugin для Gradle?
Я вижу, что Android-плагин для Gradle имеет свойство minifyEnabled
, а также свойство useProguard
, как показано ниже:
android {
buildTypes {
debug {
minifyEnabled true
useProguard false
}
release {
minifyEnabled true
useProguard true
}
}
}
Какая разница между этими двумя свойствами? Или, вернее, какой смысл каждого?
Ответы
Ответ 1
Цитата из tools.android.com:
Встроенная усадка
Версия 2.0 Android Plugin для Gradle поставляется с экспериментальным встроенная усадка кода, которая может использоваться вместо ProGuard. встроенная сушка поддерживает быстрые инкрементные прогоны и предназначена для ускорения итерационных циклов. Его можно включить, используя следующий код фрагмент кода:
android {
buildTypes {
debug {
minifyEnabled true
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
}
Встроенная усадка может удалить только мертвый код, он не запутывается и не оптимизируется. Его можно настроить с использованием тех же файлов, что и ProGuard, но будет игнорировать все флаги, связанные с обфускацией или оптимизация.
В отличие от ProGuard, мы поддерживаем использование встроенной усадки вместе с Мгновенный запуск: в зависимости от проекта он может значительно уменьшаться начальное время сборки и установки. Любые методы, которые становятся доступными после изменения кода появится как недавно добавленный в программу и предотвратите горячую настройку Instant Run.
Ответ 2
Просто включите minifyEnabled
, чтобы код был как оптимизирован, так и запутан. Это связано с тем, что useProguard true
является значением по умолчанию, поэтому нет необходимости устанавливать его явно.
Смотрите также: Запутывание в Android Studio
Ответ 3
Вам больше не нужен useProguard true
.
Сокращение кода с помощью R8 включается по умолчанию, если для свойства minifyEnabled
установлено minifyEnabled
true.
Когда вы создаете свой проект с помощью плагина Android Gradle версии 3.4.0 или выше, он больше не использует ProGuard для оптимизации кода во время компиляции. Вместо этого плагин работает с компилятором R8 для обработки задач в соответствии с официальным документом.
Если вы хотите использовать ProGuard вместо R8. Добавьте эту строку в файл gradle.properties
android.enableR8=false