Обмен знаниями, стиль вопросов и ответов
Рассмотрим архитектуру приложения с универсальным модулем библиотеки и несколькими модулями приложения, которые конфигурируют модуль библиотеки.Модуль библиотеки ссылается на ресурсы, предоставляемые модулями приложения.Это включает оптимизацию для конкретной цели: поставляйте только приложение с ресурсами, которые используются этим вариантом приложения.
Чтобы сослаться на ресурсы в модуле библиотеки, используйте ресурсы значений для введения идентификаторов:
<resources>
<item name="foo" type="drawable"/>
</resources>
Затем предоставление ресурса в модулях приложения:
app1/src/main/res/drawable-xhdpi/foo.png # variant for app1
app2/src/main/res/drawable-xhdpi/foo.png # variant for app2
# app3 configuration does not use drawable/foo, no need to provide
Ресурсы не предоставляются для каждого сегмента плотности, вместо этого полагаясь на систему , выбирающую ближайшее совпадение и увеличивающую или уменьшающую по мере необходимости сдостаточно хороших результатов.
Теперь, когда, например, приложение app1 запущено на устройстве с плотностью mdpi, таком как планшет, получается
android.content.res.Resources$NotFoundException:
Drawable app1.package.name:drawable/foo with resource ID #0x7f123456
Эта загрузка ресурсов с ближайшим соответствием работает нормально, если активы .pngвключен в библиотечный модуль напрямую.Не хочу включать в него все графические ресурсы, так как это приведет к ненужному переполнению приложения.
Эта загрузка ресурсов с ближайшим соответствием работает нормально при увеличении, например, xhdpi -> xxhdpi.Только уменьшение масштаба как xhdpi -> mdpi вызывает проблемы.