У меня есть куча сторонних библиотек, которые я включаю в свое базовое приложение. Я не могу контролировать библиотеку поддержки, которую включают сторонние модули. Это затрудняет использование одной и той же версии библиотеки поддержки Android в моем приложении.
Я знаю использование gradle, когда я могу исключить определенные библиотеки из каждой зависимости:
compile('com.test:lib1:1.0.0') {
exclude group: 'com.android.support'
}
Однако существует множество библиотек поддержки, и исключение их всех для каждой из моих сторонних библиотек кажется излишним.
Есть ли лучший способ?
Чтение этого блога: https://www.devsbedevin.net/android-understanding-gradle-dependencies-and-resolving-conflicts/
Он предлагает:
configurations.all {
resolutionStrategy {
preferProjectModules()
}
}
Однако, используя его, я все равно получаю предупреждение в Android Studio в своем файле Gradle о том, что обнаружено несколько версий библиотеки поддержки.
Что мне делать, если мои зависимости зависят от разных версий библиотеки поддержки? В любом случае выше я бы заставил сторонние библиотеки использовать определенную версию библиотеки поддержки, с которой они не были собраны. Какую версию я должен использовать? Последняя библиотека поддержки? Минимальная библиотека поддержки всех сторонних зависимостей?
Вот минимальный пример файла 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-студия выдает следующее предупреждение: