2016-07-21 2 views
3

Я разработал SDK для Android, чтобы использовать наш успокоительный API. В моем SDK я использовал сторонние библиотеки, такие как retrofit2 и rxandroid.Как выпустить SDK Android с зависимостями сторонних разработчиков?

dependencies 
{ 
    compile 'io.reactivex:rxandroid:1.2.1' 
    compile 'com.squareup.retrofit2:retrofit:2.0.2' 
    compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2' 
} 

Я выпустил файл aar для своего клиента. Его приложение импортировало мой файл aar и напрямую использовало мой сервис, который был реализован retrofit2 для использования API. Проблема в том, что его приложение также должно включать в себя зависимости retrofit2 и rxandroid в разделе зависимостей. Есть ли способ позволить моему клиенту напрямую использовать мою службу без добавления зависимостей в разделе зависимостей? потому что я не хочу, чтобы мой клиент знал, какие библиотеки я использовал в своем SDK.

Заранее спасибо.

ответ

1

Насколько я знаю, вы не можете включить aars внутри aar. У них нет файлов конфигурации, в которых указаны зависимости, которые им нужны. Вы можете

  1. Газа исходный код из библиотек, которые вы используете, и компилировать его с AAR

  2. Рассмотрим загрузки на bintray или Maven Central Repository

Номер два является более предпочтительным, так как таким образом, весь ваш клиент должен будет включить ссылку, такую ​​как compile 'com.abc.efg:version', чтобы захватить все зависимости. Это также намного лучший вариант, потому что есть способы борьбы с конфликтами версий (например, с exclude group).

Представьте, что ваш клиент использовал другой sdk, который тянул другую версию модификации. Если ваш аран был предоставлен им с помощью первого метода, они даже не смогут построить проект вообще из-за конфликтов версий. Однако со второй версией они могут просто сделать

compile ('com.abc.efg:version') { exclude group: 'com.squareup.retrofit2' } 

и быть свободным от всей этой головной боли. Пример реальной жизни - это SDK от Facebook. Он привлекает игровые сервисы google, но люди часто уже включают это как зависимость для своего проекта и сталкиваются с такими проблемами, как this.

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