Intereting Posts
Включить Java-проект в качестве библиотеки Как зарегистрировать пользователей с учетной записью Google в приложении для Android Фрагмент инициализируется дважды при перезагрузке с помощью вкладок при изменении ориентации Как textView.setText из Thread? Управление памятью Android: плотность экрана, требуемые размеры изображений и доступная куча Android (Lollipop) EditText onFocus несколько раз срабатывает Консоль разработчика Google: как просмотреть все рейтинги в списке отзывов? В GreenDao создайте запрос соединения с помощью OR вместо AND Как центрировать элементы RecyclerView? Найти точные координаты одного символа внутри TextView Как мне получить оповещения Parse.com Push, работающие в Android-приложении Cordova / Phonegap? Как удалить элемент из RecyclerView с задержкой Защита API веб-сервисов Spring RESTful от несанкционированного доступа? Кто я сравниваю фоновый ресурс Image TextView с R.drawable.bg_image для коммутатора Android-студия gitignore не будет игнорировать .iml

Gradle строит для каждой папки ресурсов

Возможно ли настроить Gradle для создания нескольких файлов apk для Android, где каждый будет использовать только одну папку ресурса?

Я имею в виду:

  • строить-hdpi.apk
  • строить-mdpi.apk
  • строить-xhdpi.apk

Я знаю, что я мог бы просто удалить определенные папки перед созданием, но было бы неплохо, если бы я мог сделать это «автоматически».

Можно ли использовать градиентные «ароматы»?

Теперь мы также можем использовать api splits http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits

Пример из ссылки документа:

android { ... splits { density { enable true exclude "ldpi", "tvdpi", "xxxhdpi" compatibleScreens 'small', 'normal', 'large', 'xlarge' } } 
  • Enable: позволяет использовать механизм разделения плотности
  • Exclude: По умолчанию все плотности включены, вы можете удалить некоторые плотности.
  • Включают: укажите, какие плотности должны быть включены
  • Reset (): сбросить список плотностей, которые будут включены в пустую строку (это позволяет в союзах с include указывать, какой из них использовать, а не те, которые игнорировать)
  • CompatibleScreens: указывает список совместимых экранов. Это введет соответствующий узел в манифест. Это необязательно.

Пример в AOSP: https://android.googlesource.com/platform/tools/base/+/2101d189d85dd46f865726b9b7aa0012832a6d9c/build-system/tests/regular/densitySplit/build.gradle

Его еще не возможно, но 0.7.0 будет иметь эту функцию.

Вам нужно будет создать 3 продукта (или больше, если вы хотите поддерживать все плотности), и у вас будет свойство вкуса, чтобы ограничить количество пакетов в apk.

0,7,0 выйдут в ближайшее время.

Обратите внимание, что поддержка Multi APK в Play Store не поддерживает плотность как фильтр, который будет отображаться как 3 разных приложения в магазине, которые вам не нужны. Изменить: это фактически поддерживается несколькими Apks: http://developer.android.com/google/play/publishing/multiple-apks.html

Edit2: теперь, когда отсутствует 0,7 +, вы можете сделать следующее:

 android { productFlavors { mdpi { resConfigs "mdpi", "nodpi" } hdpi { resConfigs "hdpi", "nodpi" } xhdpi { resConfigs "xhdpi", "nodpi" } } }