TGViewer
paradiSEcurity paradiSEcurity @paradisecurity · 1.96K subscribers
Post #337 7.19K
Размер – имеет значение! 💪

Я думаю, вы итак в курсе, что размер приложения – важный фактор взаимодействия с пользователем. А если вы пишете библиотеку или SDK, то это ОЧЕНЬ важный фактор!

Кстати, у меня точно пару раз было так, что я отказывалась от загрузки приложения, увидев, сколько оно весит. Хорошо, что есть несколько эффективных способов сжать и оптимизировать размер apk или aar и регистрации и смс.

💚 Анализ

project/build/outputs/apk/debug

Тут вы можете найти свою сборку и проанализировать ее. Вам нужно проверить наличие больших файлов. Постарайтесь заменить png на svg, в Android Studio есть для этого инструмент Asset Studio.

💚 R8 и Proguard

Теперь R8 используется по-умолчанию, когда вы включаете минификацию в файле build.gradle. Но это не значит, что он лучше. У R8 и ProGuard есть свои плюсы и минусы, но это уже отдельная история. Вы можете заменить R8 на ProGuard:

android.enableR8=false

android.enableR8.libraries=false


Размер приложения может существенно уменьшиться (на 20-40% от исходного). Пользователь скажет вам спасибо. Для агрессивной оптимизации вы можете попробовать android.enableR8.fullMode = true

Лично я больше доверяю Proguard до сих пор, потому что знаю как он работает, доводилось хорошенько покопаться в его коде.

💚 Удаление неиспользуемых ресурсов

Если ваше приложение работает только на английском, вы можете сделать resConfigs "en" в defaultConfig и gradle удалит все остальные языки, чтобы минимизировать размер сборки. Кстати, этот хак можно использовать чтобы ускорить сборку дебага, если в вашем приложении слишком много ресурсов на разных языках, а дебажить вы хотите только на одном.

💚 App Bundle

Бандлы – это подписанные zip-файлы, которые упорядочивают код и ресурсы приложения в модули. Из этих модулей Google Play генерирует apk, которые предоставляются пользователям:
 apk, configuration apks, dynamic feature apks
.

Так что ваши пользователи получат только то, что нужно для их устройства, а не полный набор ресурсов, которые вы запихнули в приложение при разработке, чтобы оно выглядело красиво на любом устройстве.

Вообще, я думаю, что загрузка фич по требованию – революционная. Пользователь загружает приложение нормального размера и может расширить по требованию его функциональность, ведь иногда так хочется запихнуть в приложение десять разных метрик, а еще вон ту жирную либу, которую притащил бизнес 😉
More from @paradisecurity
  1. Mar 4, 2025✈️ Еду в Китай и Японию! Я всегда организую свои поездки сама: покупаю билеты, бронирую ап…
  2. Feb 21, 2025photo post
  3. Feb 16, 2025💡 Почему большим компаниям так сложно создавать что-то действительно новое? Недавно обсуж…
  4. Jan 28, 2025🚀 Мысли вслух про ИИ, рынок и глобальные тренды Так вышло, что я немного в теме ИИ (делаю…
  5. Feb 14, 2024Смотрите что у меня есть! Сегодня коллеги из Yandex Cloud прислали подарок 🎁 Очень интере…
  6. Feb 12, 2024Тест-тест! Проверяем спам бота! Вылезайте спамеры и живо пишите мне в комменты, не зря же…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →