Быстрый старт • Возможности • Участие • Лицензия
ProGuard — это бесплатный инструмент для сжатия, оптимизатора, обфускатора и предварительной проверки байт-кода Java:
Он обнаруживает и удаляет неиспользуемые классы, поля, методы и атрибуты.
Он оптимизирует байт-код и удаляет неиспользуемые инструкции.
Он переименовывает оставшиеся классы, поля и методы, используя короткие бессмысленные имена.
Получаемые в результате приложения и библиотеки становятся меньше и быстрее.
Пожалуйста, используйте систему отслеживания проблем , чтобы сообщать о реальных ошибках, сбоях и т. д.
Сначала загрузите последнюю версию с GitHub.
Чтобы запустить ProGuard в Linux/MacOS, просто введите:
bin/proguard.sh < options... >
или в Windows:
binproguard.bat <options...>
Обычно вы помещаете большинство параметров в файл конфигурации (скажем, myconfig.pro
) и просто вызываете
bin/proguard.sh @myconfig.pro
или в Windows:
binproguard.bat @myconfig.pro
Все доступные опции описаны в разделе конфигурации руководства.
ProGuard можно запустить как задачу в Gradle. Прежде чем вы сможете использовать задачу proguard, вы должны убедиться, что Gradle может найти ее в своем пути к классам во время сборки. Один из способов — добавить в файл build.gradle
следующую строку, которая загрузит ProGuard из Maven Central:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ' com.guardsquare:proguard-gradle:7.6.1 '
}
}
Затем вы можете определить задачу с конфигурацией:
tasks . register( ' proguard ' , ProGuardTask ) {
configuration file( ' proguard.pro ' )
injars(tasks . named( ' jar ' , Jar ) . flatMap { it . archiveFile })
// Automatically handle the Java version of this build.
if ( System . getProperty( ' java.version ' ) . startsWith( ' 1. ' )) {
// Before Java 9, the runtime classes were packaged in a single jar file.
libraryjars " ${ System.getProperty('java.home') } /lib/rt.jar "
} else {
// As of Java 9, the runtime classes are packaged in modular jmod files.
libraryjars " ${ System.getProperty('java.home') } /jmods/java.base.jmod " , jarfilter : ' !**.jar ' , filter : ' !module-info.class '
// libraryjars "${System.getProperty('java.home')}/jmods/....."
}
verbose
outjars(layout . buildDirectory . file( " libs/ ${ baseCoordinates } -minified.jar " ))
}
Встроенная конфигурация во многом похожа на стандартную конфигурацию ProGuard. Более подробную информацию можно найти на странице настройки Gradle.
ProGuard работает как расширенный оптимизирующий компилятор, удаляя неиспользуемые классы, поля, методы и атрибуты, сокращая идентификаторы, объединяя классы, встраивая методы, распространяя константы, удаляя неиспользуемые параметры и т. д.
Оптимизации обычно уменьшают размер приложения на величину от 20% до 90%. Сокращение в основном зависит от размера внешних библиотек, которые ProGuard может удалить полностью или частично.
Оптимизации также могут повысить производительность приложения до 20%. Для виртуальных машин Java на серверах и настольных компьютерах разница обычно не заметна.
ProGuard также может удалять код журналирования из приложений и их библиотек без необходимости изменения исходного кода — фактически, исходный код вообще не нужен!
Страницы руководства (уценка, html) подробно описывают функции и использование ProGuard.
Создать ProGuard легко — вам просто понадобится установленный Java 8 JDK. Чтобы выполнить сборку из исходного кода, клонируйте копию репозитория ProGuard и выполните следующую команду:
./gradlew assemble
Артефакты будут созданы в каталоге lib
. Затем вы можете запустить ProGuard, используя сценарии в bin
, например:
bin/proguard.sh
Вы можете опубликовать артефакты в локальном репозитории Maven, используя:
./gradlew publishToMavenLocal
Вклады, проблемы и пожелания по функциям приветствуются в обоих проектах. Не стесняйтесь проверить страницу проблем и руководство по участию, если вы хотите внести свой вклад.
Авторские права (c) 2002–2023 гг. Guardsquare NV. ProGuard выпускается под лицензией GNU General Public License версии 2, за исключением ряда проектов.