2013-04-25 2 views
4

Я пытаюсь создать проект Android с Gradle.android-gradle multiproject включает и исключает библиотеки

Это имеет следующие структуры:

ProjectA----- MainProject, 
LibA  ---- Library project, 
LibB  ---- Library project, 
LibC  ---- Library project, 
LibD  ---- Library project, 
etc... 

Основываясь на situtation, мне нужно включать библиотеки, иногда нужно включать все библиотеки, 1 библиотеку, 2 или 3 и т.д., основанные на ароматизаторах. В файле настроек я включил все проекты.

Кто-нибудь знает, как включать/исключать библиотеки на основе ароматов?

Я пробовал блок зависимости, там я получаю ошибку.
Ниже приведен пример кода

dependencies { 
if (task.name.matches('compileFlovor1'){ 
    exclude module: 'LibD' 
    } 
} 

Ошибка: Не удалось найти метод исключения() для аргументов [{модуль = LibD}].

Пожалуйста, руководство меня решение этого вопроса

ответ

6

сделать добавить аромат конкретных зависимостей вы должны настроить в соответствии конфигурации. скажем, вы должны вкусам «бесплатно» и «оплаченный»

android { 
    productFlavors { 
     free 
     paid 
    } 
} 

, то вы можете установить вкус конкретных зависимости в блоке зависимостей следующим образом:

dependencies { 
    compile project(':library1') //library1 used in free and paid flavour 
    freeCompile project(':library2') 
    paidCompile project(':library3')  
    paidCompile project(':library4')  
    paidCompile project(':library5')  
} 

надежда, что помогло,

cheers, René

+0

Thanks Rene Grieschke ... Это сработало для меня. Большое спасибо .. Можно и исключить? – user2318724

+0

Мы обрабатываем зависимости настраиваемым образом и не предоставляем способ исключения зависимостей. Я не знаю, как это будет работать. Единственный способ - удалить зависимость верхнего уровня (и все ее транзитивное отложение), поскольку все остальное может сломать сборку. Возможно, просто объявите его только в тех вкусах, которые этого требуют. –

+0

В продолжение вышеприведенного вопроса, как библиотеки включены как часть apk основного проекта, который является ProjectA. В ProjectA/build/class/flavor/... включены только файлы классов проекта библиотеки, которые требуются во время компиляции ProjectA, и работает только эта библиотека. Моя вещь - библиотека plug and play .. означает, что библиотека может обслуживать, а не использовать где-либо или импортировать в ProjectA и включаться только в файл манифеста ProjectA. В этом случае, как включить библиотеки. например, в eclipse, он будет связывать все вместе, но то же самое не происходит в моем случае ... Спасибо заранее – user2318724