Разработка
Чистка Android-проекта для уменьшения размера APK, ускорения сборки и улучшения опыта разработки
В этом руководстве мы рассмотрели основные методы оптимизации Android-проектов для достижения меньшего размера APK, ускорения сборки и улучшения опыта разработки.
В любом программном проекте разработка — это непрерывный процесс, и со временем кодовая база растет и становится все сложнее. Эта сложность может привести к замедлению времени сборки, увеличению размера APK и менее продуктивному опыту разработки. В этом руководстве мы рассмотрим некоторые методы поддержания чистоты и эффективности вашего Android-проекта.
1. Удалите неиспользуемые ресурсы
Один из самых простых способов уменьшить размер APK — удалить неиспользуемые ресурсы. О них легко забыть, а со временем они могут накапливаться. Если вы хотите удалить все неиспользуемые ресурсы из вашего проекта, вы можете воспользоваться командой Refactor > Remove Unused Resources
из меню Android Studio.
Это позволит найти и удалить все неиспользуемые ресурсы из вашего проекта.
Например, если у вас есть неиспользуемый drawable, как здесь:
То вы можете удалить его с помощью команды Refactor > Remove Unused Resources
из меню Android Studio.
Другой способ удалить неиспользуемые ресурсы — использовать shrinkResources
в файле build.gradle. Это не приведет к фактическому удалению ресурсов из вашего проекта, но удалит их из APK, когда он будет собран.
Давайте посмотрим пример использования shrinkResources
в файле build.gradle:
buildTypes { release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } debug { isMinifyEnabled = false isShrinkResources = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } }
Затем создайте apk без shrinkResources и проанализируйте его.
Здесь видно, что большая часть размера apk обусловлена большим изображением, которое мы добавили. Теперь давайте добавим shrinkResources
в наш файл build.gradle и снова создадим apk:
buildTypes { release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } debug { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } }
Здесь вы можете увидеть, что размер apk был значительно уменьшен с помощью shrinkResources
.
Примечание: не забывайте, что R8 также может помочь уменьшить размер приложения. Но не для удаления неиспользуемых ресурсов, а для удаления неиспользуемого кода.
Еще один способ удалить, а точнее, найти неиспользуемые ресурсы — использовать линтер. Напомним, что линтер (например, Ktlint) — это инструмент статического анализа кода, который проверяет ваш Android-проект на наличие потенциальных ошибок и улучшений оптимизации. Он также находит неиспользуемые ресурсы и показывает их в разделе «Неиспользуемые ресурсы» отчета.
Сгенерировать отчет lint можно, выполнив в терминале следующую команду:
./gradlew lint
После этой команды lint сгенерирует отчет, в котором вы сможете увидеть неиспользуемые ресурсы в разделе «Неиспользуемые ресурсы».
Но имейте в виду, что их удаление зависит от вас, lint покажет только неиспользуемые ресурсы.
2. Удаление неиспользуемого кода
Удаление неиспользуемого кода — еще один способ уменьшить размер вашего APK. Возможно, он не так эффективен, как удаление неиспользуемых ресурсов, но все же может помочь. По крайней мере, это сделает вашу кодовую базу чище и проще в обслуживании.
Чтобы найти неиспользуемый код, который в основном состоит из неиспользуемых классов, методов и полей, вы можете обнаружить их с помощью команды Analyze > Run Inspection by Name > Unused Symbol
из меню Android Studio.
Она найдет неиспользуемый код в вашем проекте и покажет его во всплывающем окне. Там вы сможете увидеть неиспользуемый код и удалить его.
Предположим, что у нас есть неиспользуемый класс, например, такой
class X { private val y = 0 fun z() = Unit }
Тогда вы можете обнаружить его с помощью Analyze > Run Inspection by Name > Unused Symbol
и нажать кнопку безопасного удаления справа.
После этого вы увидите, что неиспользуемый класс был удален из вашего проекта.
Более того, еще одна большая часть приложения обычно приходится на библиотеки, которые мы используем. Если библиотеки не используются и остаются в проекте, они увеличивают размер apk. Чтобы найти неиспользуемые библиотеки, можно воспользоваться командой Analyze > Run Inspection by Name > Unused Library
из меню Android Studio.
Она найдет неиспользуемые библиотеки в вашем проекте и покажет их во всплывающем окне. Там вы сможете удалить их.
Например, добавим библиотеку «glide» в наш проект. Затем запустим этот анализ.
implementation("com.github.bumptech.glide:glide:4.16.0")
Затем, когда вы запустите Analyze > Run Inspection by Name > Unused Library
, вы увидите, что библиотека glide не используется в проекте, и вы можете удалить ее, нажав кнопку detact.
В этом руководстве мы рассмотрели основные методы оптимизации Android-проектов для достижения меньшего размера APK, ускорения сборки и улучшения опыта разработки. Я надеюсь, что это поможет вам в ваших проектах и сделает их меньше и чище.