Когда происходит удаление drawable-ресурсов (when packaging an APK - при сборке APK или при установке APK на конкретное устройство?) и почему mipmap-ресурсы при этом не удаляются?
while drawable resources might be removed when packaging an APK, such
as for the Gradle for Android split system for making density-specific
editions of an app, mipmap resources are left alone, apparently
P.S.
И что значит "Android split system"?
Ответ
Когда происходит удаление drawable-ресурсов (when packaging an APK - при сборке APK или при установке APK на конкретное устройство?)
Удаление ресурсов происходит на этапе сборки проекта (ведь цель этого – уменьшить размер APK). Исключить ресурсы можно с помощью оператора exclude, например:
exclude "ldpi", "xxhdpi", "xxxhdpi"
и почему mipmap-ресурсы при этом не удаляются?
В этом и есть вся фишка mipmap-ресурсов. Далее процитирую свой ответ
Зачем нужен mipmap?
Для корректного отображения изображений на дисплеях с различными DPI в Android были введены квалификаторы (например, mdpi, hdpi). Чтобы изображения корректно выглядели на всех устройствах, необходимо разместить эти изображения со всеми доступными квалификаторами (в соответствующих разрешениях).
Размещение изображений в различных разрешениях влечет за собой увеличение размера приложения.
Допустим, Вы знаете, что у Боба такое-то значение DPI, а у Алисы – некоторое другое. Чтобы уменьшить размер приложения, Вы можете отдельно собрать приложение для Боба и отдельно для Алисы, включая изображения только в необходимом разрешении. При сборке проекта Вы можете исключить ненужные изображения (с помощью соответствующей конфигурации Gradle), например:
exclude "ldpi", "xxhdpi", "xxxhdpi"
Вроде бы все хорошо: исключены ненужные изображения и размер приложения уменьшен. Однако не все так гладко. Некоторые изображения могут быть отображены в разрешениях, которые не соответствуют тому, в котором Вы оставили эти изображения в проекте. Пример – иконка приложения, в некоторых лаунчерах она может быть увеличена. Так как иконка приложения у Вас в единственном разрешении (как и все другие изображения), то она будет увеличена и произойдет т.н. пикселизация – изображение будут размыто (при большом апскейле будут заметны квадратики).
Вот тут-то и приходит на помощь mipmap – изображения, размещенные там, не будут исключены. То есть если Вы укажите в Gradle:
exclude "ldpi", "xxhdpi", "xxxhdpi"
то соответствующие изображения из drawable будут исключены, а из mipmap – нет.
Android split system – условное название совокупности конструкций, которые используется для разделения ресурсов для APK.
Комментариев нет:
Отправить комментарий