2016-05-03 9 views
0

Основной проект A (APK) зависит от подпроекта B (AAR). Оба A и B зависят от C (AAR). Проблема состоит в том, что С включается дважды:Бак: транзитивные зависимости

"values.xml:XXX: error: Attribute "YYY" has already been defined"

Как я могу исключить временную зависимость C от окончательной APK?

Проект А:

android_binary (
    deps = [  
    ':src', 
    ], ... 
) 

android_library(
    name = 'src', 
    deps = [ 
    ':C', 
    '//B:src',  
    '//B:res', 
    ], ... 
} 

android_resource(
    name = 'res', 
    res = 'src/main/res', ... 
} 

подпроекта B

android_aar (
    deps = [ 
    ':src', 
    ':res' 
    ], ... 
) 

android_library(
    name = 'src', 
    deps = [ 
    ':res', 
    ':C' 
    ], ... 
) 

android_resource(
    name = 'res', 
    deps = [ 
    ':C' 
    ], ... 
) 

С "AppCompat-v7.aar".
Примечание: A содержит C в «A/libs» и B содержит C в «B/libs».

ответ

0

Я закончил удаление зависимости C от основного проекта A, пока я работаю над подпроектом B.
Таким образом, A получает C-суб-проект B как транзитивную зависимость и предотвращает включение C дважды.

0

Трудно сказать по образцу, который вы предоставили, но похоже, что у вас есть «C», определенный дважды: один раз в A/libs и один раз в B/libs. Из-за этого Бак не понимает, что это «одно и то же». То, что вам нужно сделать, это поместить «C» в место, где оба A и B могут ссылаться на него (наличие «сторонней» папки, являющейся одноранговым узлом «A» и «B», довольно распространено), таким образом, Buck будет уметь видеть, что на графике есть диамант зависимости, и правильно его решить.

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

  • Нет связанных вопросов^_^