2013-12-15 2 views
11

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

Я имею в виду:

  • наращивание hdpi.apk
  • наращивание mdpi.apk
  • наращивание xhdpi.apk

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

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

+0

зачем вам это нужно? – panini

+0

Мое приложение содержит большое количество фотографий, и я хочу распространять его как 3 отдельных приложения, поэтому я мог бы уменьшить размер файла. Загрузка активов пользователем после установки приложения не может быть решена, потому что я хочу, чтобы он запускался из-под-коробки. – scana

ответ

9

Теперь мы можем также использовать API расщепляется 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' 
    } 
} 
  • позволяет: позволяет тыс e механизм разделения плотности
  • исключить: по умолчанию все плотности включены, вы можете удалить некоторые плотности.
  • включают: укажите, какие плотности следует включить
  • reset(): сбросить список плотностей, которые будут включены в пустую строку (это позволяет в союзах с include указывать, какой из них использовать, а не какие игнорировать)
  • compatibleScreens: указывает список совместимых экранов. Это введет соответствующий узел в манифест. Это необязательно.

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

+0

Спасибо за ссылку на пример !!! Обычно так сложно найти ... – speedynomads

+0

Рад, я мог бы помочь –

+0

Очень приятно, искал то же самое с последних многих дней. – Smeet

8

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

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

0.7.0 скоро выйдет.

Обратите внимание, что поддержка Multi APK в Play Store не поддерживает плотность как фильтр, который будет отображаться как 3 разных приложения в магазине, которые вам не нужны. Edit: это на самом деле поддерживается несколько APK-файлов: 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" 
    } 
    } 
} 
+0

Вы уверены, что этот фильтр плотности? http://developer.android.com/google/play/publishing/multiple-apks.html говорит, что я могу использовать: Размер экрана (и, при необходимости, плотность экрана) – scana

+0

Хм, я думаю, вы правы! –

+0

Я принимаю ваш ответ, но было бы здорово, если бы вы (или я :)) могли предоставить простой пример использования опций для ограничения папок. Я буду работать над этим через несколько дней, поэтому я попытаюсь опубликовать некоторые результаты здесь. – scana

Смежные вопросы