Подтвердить что ты не робот

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

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

Я имею в виду:

  • build-hdpi.apk
  • build-mdpi.apk
  • встроенный xhdpi.apk

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

Можно ли использовать Gradle "ароматы"?

4b9b3361

Ответ 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"
    }
  }
}