Связать зависимости для конкретных вкусов с размерами - PullRequest
0 голосов
/ 26 апреля 2018

Я занимаюсь разработкой приложения для Android двух типов: бесплатное и платное. Каждый ярус имеет 2 варианта: легкий и тяжелый. Вот реализация Gradle этого:

flavorDimensions "tier", "distro"
productFlavors {
    free {
        dimension "tier"
    }
    premium {
        dimension "tier"
    }
    lightweight {
        dimension "distro"
    }
    heavy {
        dimension "distro"
    }
}

Я пытаюсь добавить зависимость .jar для уровня премиум только . Способ добавить это довольно тривиально:

premiumImplementation fileTree(dir: 'libs', include: ['*.jar']) // Works

Проблема в том, что у меня есть две версии этого .jar. По одному на каждую упомянутую выше подрывную деятельность: lightweight и heavy.

Я пытался применить тривиальное решение к этому типу зависимости:

premiumLightweightImplementation fileTree(dir: 'libs', include: ['*lightweight.jar'])
premiumHeavyImplementation fileTree(dir: 'libs', include: ['*heavy.jar'])

Но я получаю ошибку gradle:

Не удалось найти метод premiumLightweightImplementation () для аргументов [каталог 'libs']

Конечно, это относится и к premiumHeavyImplementation.

Я уверен, что есть способ сделать то, что я прошу. Я нашел два варианта решения этой проблемы:

  1. Хватит вообще использовать измерения (Плохое решение, мне придется самому написать все комбинации вкусов).
  2. Реализовать функцию, которая получает текущий вариант, который я пытаюсь собрать, и использовать его возвращаемое значение в пути к каталогу. Например:

    комбинация def = getCurrentFlavorCombination ()
    premiumImplementation fileTree (dir: "комбинация libs / $", включает: ['* .jar'])

Это уродливые и ненадежные способы выполнить это простое требование: С премиум-уровнем должен быть связан .jar - версия этого .jar зависит от другого измерения - дистрибутива.

Я не прошу слишком многого, но не смог найти в документации Gradle хороший способ сделать это. Я только нашел способы скомпилировать библиотеку в jar-файлы, но моя уже входит в jar-файлы, я только хочу связать ее соответствующим образом. Может, вы, ребята, можете помочь мне здесь.

Большое спасибо!

1 Ответ

0 голосов
/ 26 апреля 2018

Я шел по этому разделу руководства по Android Studio, в котором говорится, что вам необходимо явно объявить любые конфигурации, которые используются для комбинаций типа «вкус / сборка». В этом случае это означает, что перед блоком dependencies {} необходимо добавить следующее в сценарий сборки:

configurations {
    freeLightweightImplementation
    freeHeavyImplementation
    premiumLightweightImplementation
    premiumHeavyImplementation
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...