2013-09-18 3 views
1

У меня в настоящее время проблема в моем проекте Android на основе Gradle. Мой проект имеет две зависимости:Как управлять приоритетами между локальными зависимостями Gradle?

compile project(':Library:lib1') 
compile files('libs/libGoogleAnalyticsServices.jar') 

libGoogleAnalyticsServices является версия v3 для Google Analytics.

проблема заключается в том, что lib1 старая библиотека в зависимости от версии v2 из Google Analytics:

compile files('libs/libGoogleAnalyticsV2.jar') 

В конце есть конфликт между двумя банки (даже если v2 должна быть видна только lib1) и v2 захватывает v3. В моем основном модуле у меня отсутствуют ссылки.

Так две проблемы:

  • Почему v2 даже видна из основного модуля?
  • Почему v2 захватывает v3?

В идеале я хотел бы оставить v2 видимым только со своих lib1 и v3, только видимых с моего основного модуля.

Любая идея?

+0

Технически вы не можете скрыть устаревшую банку аналитики, если вы включите lib1. Во время выполнения lib1 требуется старая банка, поэтому имеет смысл включить это, иначе оно нарушит приложение. Именно по этой причине v2 отображается в вашем основном проекте. – botteaap

ответ

0

Я мало знаю об Android, но я бы предположил, что ситуация такая же, как для стандартных приложений Java: вы можете использовать только одну версию конкретной библиотеки для каждого приложения и должны убедиться, что весь код который поставляется с вашим приложением, совместим с этой версией.

+0

Но можно ли переопределить зависимость jar в этом случае? Например. исключить старую банку и использовать банку v3? – botteaap

+0

Я могу закончить использование v3 в lib1 в конце, это может быть подходящее время. Я попытался добавить инструкцию exclude в lib1, но похоже, что он не поддерживает локальные файлы. –

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