Может ли 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
.