Android
Что такое ProGuard? Что используется в Android?
Поиск…
Вступление
Proguard - это бесплатный инструмент для сжатия файлов Java, оптимизатор, обфускатор и преверизатор. Он обнаруживает и удаляет неиспользуемые классы, поля, методы и атрибуты. Он оптимизирует байт-код и удаляет неиспользуемые инструкции. Он переименовывает остальные классы, поля и методы, используя короткие бессмысленные имена.
Сократите свой код и ресурсы с помощью proguard
Чтобы файл APK был как можно меньше, вы должны включить сокращение, чтобы удалить неиспользуемый код и ресурсы в вашей версии сборки. На этой странице описано, как это сделать и как указывать, какой код и ресурсы сохранить или удалить во время сборки.
Сокращение кода доступно с помощью ProGuard, который обнаруживает и удаляет неиспользуемые классы, поля, методы и атрибуты из вашего упакованного приложения, в том числе из включенных библиотек кода (что делает его ценным инструментом для работы с лимитом ссылки 64k). ProGuard также оптимизирует байт-код, удаляет неиспользуемые инструкции кода и обфускает оставшиеся классы, поля и методы с короткими именами. Обфусканный код делает ваш АПК сложным для обратного проектирования, что особенно ценно, когда ваше приложение использует чувствительные к безопасности функции, такие как проверка лицензии.
Сокращение ресурсов доступно с плагином Android для Gradle, который удаляет неиспользуемые ресурсы из вашего упакованного приложения, включая неиспользуемые ресурсы в библиотеках кода. Он работает в сочетании с сокращением кода, так что после удаления неиспользуемого кода любые удаленные ссылки могут быть также безопасно удалены.
Сжатие кода
Чтобы включить сокращение кода с помощью ProGuard
, добавьте minifyEnabled
true в соответствующий тип сборки в файле build.gradle
.
Имейте в виду, что сокращение кода замедляет время сборки, поэтому вам следует избегать использования его при сборке отладки, если это возможно. Тем не менее, важно, чтобы вы включили сокращение кода в своем конечном APK, используемом для тестирования, потому что это может привести к ошибкам, если вы недостаточно настроили какой код сохранить.
Например, следующий фрагмент файла build.gradle
позволяет build.gradle
для сборки релиза:
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
...
}
В дополнение к minifyEnabled
собственности, proguardFiles
свойство определяет ProGuard rules
:
Метод getDefaultProguardFile ('proguard-android.txt') получает настройки ProGuard по умолчанию из tools/proguard/ folder
Android SDK tools/proguard/ folder
. Совет. Для еще большего сокращения кода попробуйте proguard-android-optimize.txt
, расположенный в том же месте. Он включает в себя те же правила ProGuard, но с другими оптимизациями, которые выполняют анализ на уровне байт-кода внутри и между методами - чтобы уменьшить размер вашего APK и помочь ему работать быстрее. Файл proguard-rules.pro
- это то, где вы можете добавить пользовательские правила ProGuard. По умолчанию этот файл находится в корне модуля (рядом с файлом build.gradle). Чтобы добавить дополнительные правила ProGuard, специфичные для каждого варианта сборки, добавьте другое свойство proguardFiles в соответствующий блок productFlavor
. Например, следующий файл Gradle добавляет flavor2-rules.pro к вкусу аромата 2. Теперь flavor2 использует все три правила ProGuard, поскольку также применяются те из блока release.
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
productFlavors {
flavor1 {
}
flavor2 {
proguardFile 'flavor2-rules.pro'
}
}
}