TGViewer
ANDROID SCHOOL.RU - Android на практике ANDROID SCHOOL.RU - Android на практике @android_school_ru · 944 subscribers
Post #365 826
Как задача по добавлению одной простой зависимости увеличила размер APK почти на 10%, но мы вовремя разобрались.

Сегодня расскажу одну интересную историю. Нужно было добавить небольшую зависимость в проект, я посмотрел описание и оценил задачку в пару SP. Прописать dependency в build.gradle - задачка с которой справится и стажер.

Но не тут то было. У нас есть мониторинг, который вычисляет разницу релизной APK до и после изменений. Оказалось, что после добавления этой библиотеки размер проекта увеличился почти на 10%. Как следствие pipeline на CI/CD упал с отчетом, что такое увеличение не допустимо. После тщательного изучения проблемы, оказалось, библиотека притащила агрессивные Proguard-правила, которые отключили оптимизацию для всего приложения.

⚠️Как работают Proguard-правила в Android-проекте:

1. Основные правила проекта – находятся в файле proguard-rules.
2. Правила из зависимостей (библиотек) – могут поставляться внутри AAR/JAR-файлов как proguard.txt.

Что происходит при сборке:
Если библиотека предоставляет свои Proguard-правила, они объединяются с правилами основного проекта.
Порядок применения зависит от порядка зависимостей, но обычно:
- Сначала применяются правила библиотек.
- Затем – правила основного проекта ( proguard-rules).

В моем кейсе были следующие проблемные правила:

1. -keepclassmembernames class  * { public protected <methods>; }
- Действует на все классы приложения (из-за *), отключая оптимизацию методов. В коде SDK нужно уточнить правило, чтобы оно затрагивало только классы SDK.

2. -keep public class **.BuildConfig { *; }
- Сохраняет все BuildConfig в проекте, хотя нужно только свои.

3. -keep class ru.example. ** { *; }
- Полностью отключает оптимизацию всего SDK, хотя можно ограничиться только моделями (например, сериализуемыми классами).


Вывод:
Обязательно добавьте проверки на CI/CD, чтобы мониторить изменения в вашем приложении. Если вы разрабатываете SDK или библиотеку - обязательно проверяйте настройки proguard, чтобы не влиять на проекты, которые будут внедрять ваше решение. Свою обратную связь мы передали разработчикам и в следующей версии уже все поправили, так что все хорошо.
Правила должны быть:
📌 Конкретными (без дженериков, где возможно).
📌 Ограниченными только своим кодом (не затрагивать классы приложения).
📌 Проверки на CI/CD помогут вам оперативно выявить проблемы до релиза в прод.

А у вас есть проверки на CI/CD и как они вам помогают?
  • 👍 16
  • ❤ 2
  • 🔥 1
More from @android_school_ru
  1. Oct 8, 2026Как быть Android-разработчику в эпоху перемен? Спасибо всем, кто принял участие в опросе п…
  2. Sep 28, 2026Post #401
  3. Sep 14, 2026​​Как ChatGPT украл у начинающих разработчиков самое важное. Вчера был День программиста,…
  4. Sep 9, 2026Как научиться решать задачи на Leetcode Знаю, что многих разработчиков буквально вводят в…
  5. Sep 1, 2026🎓 1 сентября - хороший повод снова чему-то поучиться. Особенно если осенью планируете ход…
  6. Aug 31, 2026​​Получил оффер в Яндекс и ... отказался. Да, вы не ошиблись, сам отказался 😁. Никогда не…
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 →