TGViewer
Android Broadcast Android Broadcast @android_broadcast · 14.5K subscribers
Post #9292 5.99K
🤖 Strict-режим Android Resource Shrinker — аккуратнее, он без компромиссов

В Android можно включить resource shrinking, чтобы убрать из финального APK/Bundlа неиспользуемые ресурсы (строки, drawables, layouts и т.д.)
android {
buildTypes {
release {
shrinkResources true
minifyEnabled true
}
}
}


С недавних пор Google экспериментирует со strict режимом работы шринкера, который делает эту очистку более агрессивной, а именно:
👉 Удаляет все ресурсы, которые не удалось найти в коде или XML.
👉 Не делает допущений, что ресурс “вдруг используется где-то через reflection”. Нету явного использования или keep правила - удаление
👉 Режет всё под корень — даже если вы явно используете getIdentifier() или динамически загружаете ресурсы по имени, он может их не заметить и выкинуть.

📉 Эффект - меньший размер сборки, но есть риск крешей в рантайме, если ресурсы удалены, а были нужны

Как включается strict режим:
# В gradle.properties
android.experimental.enableStrictResourceShrinking=true


🛡 Как сохранить нужные ресурсы от удаления?

Если вы точно знаете, что ресурс используется, но shrinker может его не заметить:
1️⃣ProGuard правила (R8 учитывает их для ресурсов тоже):
# Правила для R8
-keepresources R.string.some_dynamic_string
-keepresources R.drawable.icon_loaded_by_name

2️⃣Файлы в папках res/raw/ и assets/ shrinker не трогает вообще.
3️⃣tools:keep и tools:discard в XML (подробнее тут):
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/landing,@drawable/logo"
tools:discard="@drawable/unused_image" />


Рекомендации:
👉 Не включайте strict-режим без хорошего UI-тест-покрытия.
👉 Проверьте, что не используете динамическое получение ресурсов getIdentifier() без крайней необходимости.
👉 Добавляйте -keepresources, если есть малейшие сомнения.

Подробнее про оптимизацию ресурсов читайте в официальной документации

#android #r8 #оптимизация
  • 👍 45
  • ❤ 4
  • 🔥 4
More from @android_broadcast
  1. Oct 2, 2026🤖 Android Device Streaming теперь в Android CLI Android CLI - терминальная утилита от ком…
  2. Oct 2, 2026🔨 Вышла стабильная Android Studio Rabbit 1 (2026.2.1) Что нового: 👉 Из Generate Signed A…
  3. Oct 1, 2026🔥 Выпустили официальный плагин Firebase для Codex #Firebase #Codex
  4. Oct 1, 2026👨🏻‍💻 Строим мультиагентные системы для разработки на Podlodka AI Crew Инженерные задачи…
  5. Sep 30, 2026📹 День, когда сайдлоадинг остановился. Google запустила верификацию разработчиков при уст…
  6. Sep 30, 2026‼️NoOp — удобный способ отключить API в релизных сборках без усложнения кода Отладочные ин…
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 →