2015-06-12 3 views
6

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

Например, я использую библиотеку волейбола версии X в своей библиотеке и отправляю ее как пакет градации. И разработчик импортирует Volley с версией Y вместе с моей библиотекой.

Что должно быть лучшим способом включить зависимость в библиотеку (модуль, банку или пакет), чтобы минимизировать конфликтную ситуацию.

+0

Было бы хорошо, если бы документация, которая отвечает на этот вопрос. Как бы то ни было, мы остаемся с СО, как наш лучший способ ответить на этот вопрос. В то время как это не является специфическим, это _is_ то, что все программисты на Android будут иметь дело в конечном счете. И общий ответ был бы более полезен, чем тысяча конкретных. –

ответ

0

Вы укажете пользователя, чтобы исключить другие библиотеки. Пример из моего Gradle

compile('com.mobprofs:retrofit-simplexmlconverter:1.1') { 
    exclude module: 'stax' 
    exclude module: 'stax-api' 
    exclude module: 'xpp3' 
} 

В общем пользователя, если будет иметь конфликты, и он будет знать, как Gradle работы он сможет добавить eclude LIBS

+0

Этот модуль будет исключен из импортированной библиотеки? Или пользовательский проект? –

+0

https://docs.gradle.org/current/userguide/dependency_management.html -> перейти к 50.4.7. Исключая транзитивные зависимости –

+0

, вы посмотрели здесь http://stackoverflow.com/questions/16601299/how-to-create-a-library-project-in-android-studio-and-an-application-project-tha и здесь http://stackoverflow.com/questions/16718026/how-to-build-an-android-library-with-android-studio-and-gradle? –

2

Два варианта

  1. Возможные способы для включения зависимостей ваших зависимостей в них заключается в создании контейнера fat/uber/share (для этого есть плагины Gradle). Используйте пользовательский загрузчик классов для загрузки банок в банке с помощью One-Jar. Или использовать Jar Jar Links.
  2. Второй вариант заключается в specificaly exclude transistive dependencies делает:

    compile('X') { 
        exclude module: 'Y' 
    } 
    
Смежные вопросы