Библиотеки от Google и других крупных компаний, как правило, содержат множество ресурсов для различных локалей, версий Android, плотностей экранов и других конфигураций. По умолчанию APK включает все эти ресурсы, даже если они не используются в вашем приложении.
🛒 App Bundle позволяет доставлять только необходимые ресурсы, включая локали. Однако, если ваше приложение поддерживает смену языка внутри самого интерфейса, вы, скорее всего, отключаете динамическую доставку языковых ресурсов, чтобы все строки были доступны сразу:
// build.gradle.kts
android {
bundle {
// Отключить динамическую доставку ресурсов по локалям
language.enableSplit = false
density.enableSplit = true
abi.enableSplit = true
}
}
Чтобы в APK и App Bundle попали только нужные локали, необходимо явно указать их через фильтр локалей в Android Gradle Plugin:
android {
androidResources {
localeFilters += listOf("en", "ru")
}
}В результате:
✅ Размер сборки уменьшится
✅ В UI не появятся ресурсы из локалей, которые вы не поддерживаете
✅ Google Play не будет доставлять ресурсы для лишних локалей
Ранее вместо androidResources использовали resConfigs и resConfiguration, что позволяло удалять ресурсы не только по локалям, но и в других квалификаторах. Эту возможность пометили как deprecated. Теперь удаление предлагается только по языкам. Указание значений из других квалификаторов игнорируется.
📚 Больше полезных материалов в Базе Знаний Android разработчика от @android_broadcast
#android #googleplay #лучшиепрактики