AAB файл убирает языковые пакеты
При тестировании приложения в Android Studio устанавливается обычный APK файл, где все ресурсы локализации есть и переключение языков работает корректно. Но когда моё приложение появилось в Play Market, то из-за новой системы от Google с AAB файлами убираются лишние языковые пакеты.
У меня возник вопрос, что мне делать, т. к. в моём приложении есть переключатель языков, который работает с помощью такого кода:
private static void changeLanguage(Context context, String locale) {
Resources res = context.getResources();
Configuration conf = res.getConfiguration();
conf.locale = new Locale(locale);
res.updateConfiguration(conf, res.getDisplayMetrics());
SharedPreferences.Editor editor = context.getSharedPreferences("Preferences", Context.MODE_PRIVATE).edit();
editor.putString("language", locale);
editor.apply();
}
Но из-за того, что файл AAB убирает лишние языковые пакеты, при попытке смены языка приложение вылетает.
Ответы (2 шт):
У меня была такая же проблема. Попробуйте добавить в build.gradle такой параметр:
android {
bundle {
language {
enableSplit = false
}
}
}
и тогда всё должно быть раздельно по языкам. И второй вариант почему может не работать:
res.updateConfiguration(conf, res.getDisplayMetrics());
эта штука если мне не изменяет память deprecated. Поэтому если тестируете на каком-то новом устройстве может и не заработать нормально.
PlayCore API поддерживает скачивание ресурсов другого языка по мере необходимости. Это не увеличит исходный размер приложения.
Вариант с enableSplit = false не самый предпочтительный, так как увеличит размер приложения.