Как управлять различными версиями библиотеки поддержки для сторонних разработчиков с помощью gradle?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как управлять различными версиями библиотеки поддержки для сторонних разработчиков с помощью gradle?

Сообщение Anonymous »

У меня есть несколько сторонних библиотек, которые я включаю в свое базовое приложение. Я не могу контролировать библиотеку поддержки, которую включают в себя сторонние модули. Из-за этого в моем приложении сложно использовать одну и ту же версию библиотеки поддержки Android.
Я знаю, что с помощью gradle можно исключить определенные библиотеки из каждой зависимости:

Код: Выделить всё

compile('com.test:lib1:1.0.0') {
exclude group: 'com.android.support'
}
Однако существует масса вспомогательных библиотек, и исключение их всех для каждой из моих сторонних библиотек кажется излишним.
Есть ли лучший способ?
Чтение этого сообщения в блоге: https://www.devsbedevin.com/android-und ... conflicts/
Это предполагает:

Код: Выделить всё

configurations.all {
resolutionStrategy {
preferProjectModules()
}
}
Однако при его использовании я все равно получаю предупреждение в Android Studio в файле Gradle о том, что обнаружено несколько версий библиотеки поддержки.
Что мне делать, если мои зависимости зависят от разных версий библиотеки поддержки? В любом случае, описанном выше, я бы заставил сторонние библиотеки использовать конкретную версию библиотеки поддержки, с которой они не были созданы. Какую версию мне следует использовать? Последняя библиотека поддержки? Минимальная библиотека поддержки всех сторонних зависимостей?
Вот пример минимального файла градиента, показывающий включение сторонних зависимостей, каждая из которых зависит от собственной версии библиотеки поддержки.

Код: Выделить всё

android {
compileSdkVersion 26
buildToolsVersion '26.0.2'

defaultConfig {
applicationId "com.example.app"
minSdkVersion 17
targetSdkVersion 25
}
}

configurations.all {
resolutionStrategy {
preferProjectModules()
}
}

dependencies {
compile 'com.android.support:support-v13:26.0.0'
compile 'com.test:lib1:1.0' // depends on support-v13:25.0.0
compile 'com.test:lib2:1.0' // depends on support-v13:25.2.0
compile 'com.test:lib3:1.0' // depends on support-v13:25.4.0
compile 'com.test:lib4:1.0' // depends on support-v13:26.0.0
}
Студия Android выдает следующее предупреждение:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/480 ... ith-gradle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»