Упаковка Android AAR с зависимостями

Я хочу упаковать свою библиотеку как файл aar.

Библиотека имеет несколько зависимостей (универсальный загрузчик изображений, ORMLite, guava...)

У него также есть зависимость от другой библиотеки, которую я написал (назовем ее «библиотека B»).

У меня есть 2 вопроса:

  1. Нужно ли всем, кто будет использовать мою библиотеку, добавлять зависимости в соответствии с зависимостями библиотеки (универсальный загрузчик изображений, ORMLite, guava...)
  2. Нужно ли мне создавать отдельный aar для «библиотеки B», и чтобы пользователи моей библиотеки имели для нее отдельную зависимость?

person dors    schedule 11.01.2015    source источник


Ответы (2)


Нужно ли всем, кто будет использовать мою библиотеку, добавлять зависимости в соответствии с зависимостями библиотеки (универсальный загрузчик изображений, ORMLite, guava...)

Нет, если вы распространяете свой AAR как артефакт в репозитории с соответствующими метаданными (например, файл POM в стиле Maven). Метаданные будут указывать на ваши зависимости, а системы сборки (например, Gradle) подтянут зависимости.

Нужно ли создавать отдельный aar для «библиотеки B»

Да, иначе ни у кого не будет к нему доступа, если только вы не устраните его и не сложите его код в свою первую библиотеку.

и есть ли у пользователей моей библиотеки отдельная зависимость для нее?

См. выше для настройки зависимостей.

person CommonsWare    schedule 11.01.2015

Вам не нужно этого делать, вы просто делаете следующее: если ваша библиотека aar имеет тридцать зависимостей: вы должны заставить других использовать вашу библиотеку aar таким образом: например:

compile('com.android:com.android.download:1.3')

or

compile('com.android:com.android.download:1.3@aar'){
       transitive = true
}

если у вашего aar libray нет тридцати зависимостей:

compile('com.android:com.android.download:1.3@aar')

Одним словом: у @aar есть конфликт с хранилищем транзитивных данных по умолчанию.

person FengYi Ya    schedule 29.10.2016