TGViewer
Блог компании mxkmn inc. Блог компании mxkmn inc. @mxkmn_inc · 112 subscribers
Post #98 1.26K
#тяжёлыйконтент

Вообще, большинство разрабов просто ленивы, и поэтому приложения сейчас занимают какое-то ненормальное количество места. Я постоянно стараюсь с этим бороться, но и тут не без проблем.

В первую очередь, гугл говорит, что для оптимизации требуется добавить:
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"))

Действительно, эти три строки сжимают размеры в 5-10 раз, попутно ускоряя приложение. Горе-разрабы уже тут делают пук-среньк, так как не у всех это активировано - люди просто не смогли прочитать довольно популярную статью с официального сайта разработчиков.

Далее предлагается вычищать лишние языки:
resourceConfigurations.addAll(listOf("en", "ru"))

Библиотеки автоматически добавляют переводы каких-то редких кусков приложения на 87 языков. В теории вещь полезная, но на практике их никто никогда не увидит или вовсе введёт в диссонанс - вырезаем.

После этого, вероятно, захочется указать, какие языки присутствуют в приложении. Гугл предлагает создать эти данные автоматически:
androidResources.generateLocaleConfig = true
unqualifiedResLocale=en

Но эта фича сломана при вырезании лишних языков! Поэтому указываем всё вручную:
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en-US"/>
<locale android:name="ru"/>
</locale-config>

android:localeConfig="@xml/locales_config"


С этого момента предложения гугла закончились. Но внезапно оказывается, что isShrinkResources не работает - в .apk всё ещё лежат картинки и строки, которые не должны были появиться. Приходится копать дальше и узнавать, что для нормальной очистки нужно в res/raw создать keep.xml с таким содержанием:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict"/>

После этого неиспользованные ресурсы, наконец-то, начнут удаляться. Но вот только об этой фиче никто не знает, поэтому приложение может начать вылетать, так как не все разработчики пометили через tools:keep ресурсы, к которым они обращаются через рефлексию. В моём случае это одна библиотека, два строковых ресурса - написал разрабам, сказали что починят.

Короче, существование tools:shrinkMode="strict" обнаружил только вчера. В моём приложении уже несколько релизов лежали дебажные ресурсы, которые никак не использовались. Об shrinkMode действительно никто не знает, даже те, кому стоило бы - создателям библиотек и больших приложений.

Например, в банковских приложениях я заметил дублирование картинок по 5 раз. Дело в том, что до поддержки векторных картинок (до времён пятого андроида) приходилось создавать множество растровых картинок для разных экранов. Но блин, эти приложения уже давно не поддерживают ничего ниже 7-ого андроида, то есть там тонны говн, которые не использует система! И это всё можно вырезать, но гугл никак не сообщает о такой возможности. Да и в общем-то разработчики могли вручную вырезать, но им лень.

Наверное, сейчас вам кажется, что так много места занимают исключительно ненужные картинки. Но, естественно, это не так - в основном всё же проблема в разрабах, которые не парятся по качеству. Большинство проблем из-за тяжёлых внешних библиотек, которые при переписывании на стандартные для платформы ЯП позволили бы сократить некоторые специфичные супераппы (те же банки) в 2-4 раза. Естественно, такие зависимости нужно по максимуму избегать, но в корпорате это не всегда возможно.

Например раньше, до тряски по импортозамещению, приложения использовали системные карты (от гугла), которые не занимают места. Сейчас все боятся использовать забугорное при наличии нашенских аналогов - гугл карты подменяются картами 2гис и яндексом, пакет приложения мгновенно увеличивается минимум на 25 МБ. Такова цена, заплатите вы :).

В общем, вот такие вот будни разработчика, который сам потихоньку улучшает качество проектов, но вокруг себя такого же поведения не замечает. Хотя о проблеме говорят многие.
  • 👍 9
  • 🤡 2
More from @mxkmn_inc
  1. Jan 4, 2026Гринд: • Нашёл новую работу: нахожусь в core-команде с толковыми чуваками, пишем на Compos…
  2. Jan 4, 2026Мне нравятся итоги года тем, что ими можно объединить кучу небольших мыслей в один пост, г…
  3. Dec 28, 2025Привет всем, кто ещё не отписался)0) Много изменений в жизни, и времени на посты, увы, нет…
  4. Dec 28, 2025В конце предыдущего года появилось желание создать сообщество для кодеров, в котором бы бы…
  5. Apr 10, 2025Upd.: много чего было пофикшено с обновлениями, пост обновлён Surface Pro: теперь не преми…
  6. Mar 26, 202525 лет назад существовала мобильная операционка, которая захватила 80% рынка карманных ком…
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 →