Может ли AAR включать транзитивные зависимости?

Прямо сейчас у меня есть проект библиотеки, скажем, проект Foo, который зависит от такой библиотеки, как OkHttp.

Теперь у Foo есть шаг сборки Maven, который генерирует AAR и отправляет его в публичное место.

Теперь допустим, у меня есть проект B, мы назовем его Bar. Bar - это приложение для Android, а Bar зависит от Foo.

Ну, у меня есть это. Однако когда я вызываю функцию public static в Foo из Bar, которая вызывает OkHttp, я получаю следующее сообщение:

java.lang.NoClassDefFoundError: com.squareup.okhttp.OkUrlFactory
            at com.foo.sdk.utils.OkHttpStack.<init>(OkHttpStack.java:15)

Возможно ли это? Или Bar будет зависеть вручную от OkHttp, а также от любых других зависимостей, которые есть у Foo?

Ответ 1

Прошло немного времени, но я нашел то, что искал. Так получилось, что я так формулировал свои поиски.

Этот менее заметный ответ был именно тем, что я искал:

Переходные зависимости не разрешены для библиотеки aar с использованием gradle

По сути, мне нужно было добавить

transitive = true

... build.gradle Бар

Пример:

compile ('com.foo:FOO:[email protected]'){
       transitive=true
}

Таким образом, он включает в себя все мои транзитивные библиотеки.

Обратите внимание, однако, что это может фактически вызвать конфликты между зависимостями (особенно локальными), которые могут быть разрешены с помощью тега exclude.