Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Удаление drawable-ресурсов

#android #android_drawable #android_resources


Когда происходит удаление 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"? 
    


Ответы

Ответ 1



Когда происходит удаление 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.

Комментариев нет:

Отправить комментарий