Gradle строит для каждой папки ресурсов
Возможно ли конфигурировать Gradle для сборки нескольких файлов андроида apk, где каждый будет использовать только одну папку ресурса?
Я имею в виду:
- build-hdpi.apk
- build-mdpi.apk
- встроенный xhdpi.apk
Я знаю, что я мог бы просто удалить определенные папки перед созданием, но было бы неплохо, если бы я мог сделать это "автоматически".
Можно ли использовать Gradle "ароматы"?
Ответы
Ответ 1
Теперь мы также можем использовать api splits http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
Пример. Из ссылки docs:
android {
...
splits {
density {
enable true
exclude "ldpi", "tvdpi", "xxxhdpi"
compatibleScreens 'small', 'normal', 'large', 'xlarge'
}
}
- enable: включает механизм разделения плотности
- exclude: по умолчанию все плотности включены, вы можете удалить некоторые плотности.
- включить: указать, какие плотности следует включать
- reset(): reset список плотностей, которые должны быть включены в пустую строку (это позволяет в союзах с include указывать, какой из них использовать, а не те, которые игнорировать)
- compatibleScreens: указывает список совместимых экранов. Это введет соответствующий манифест node. Это необязательно.
Пример в AOSP: https://android.googlesource.com/platform/tools/base/+/2101d189d85dd46f865726b9b7aa0012832a6d9c/build-system/tests/regular/densitySplit/build.gradle
Ответ 2
Его еще нет, но 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"
}
}
}