Gradle TransitiveDependency Версия Конфликт - PullRequest
0 голосов
/ 07 сентября 2018

Я реализую расширенный API для создания PDF для существующего проекта с использованием PDFBox. Чтобы использовать PDFBox, мне нужно включить в свой build.gradle следующую зависимость:

implementation('com.tom_roush:pdfbox-android:1.8.10.0')

Одной из зависимостей, которые использует существующий проект, является spongycastle для криптокомпонентов:

implementation 'com.madgag.spongycastle:bcpkix-jdk15on:1.58.0.0'

Итак, я сначала включил обе зависимости в мой файл build.gradle и попытался собрать приложение. Это исключение, которое я получаю:

Тип программы уже присутствует: org.spongycastle.cert.CertRuntimeException Message {kind = ERROR, текст = тип программы уже присутствует: org.spongycastle.cert.CertRuntimeException, sources = [Неизвестный источник файл], имя инструмента = Optional.of (D8)}

Я предположил, что эта проблема возникает из-за конфликта версий из-за переходных зависимостей pdfbox, а именно: enter image description here

Я попытался решить проблему с помощью зависимости от исключения в моем build.gradle:

implementation('com.tom_roush:pdfbox-android:1.8.10.0'){
exclude group:'com.madgag.spongycastle'
}

Потому что, насколько я знаю, я не использую криптографические аспекты непосредственно в моей реализации pdfbox.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Большое спасибо - я смог решить проблему, используя другой подход.

configurations.all {
resolutionStrategy {
    dependencySubstitution {
        substitute module('com.madgag.spongycastle:pkix:1.54.0.0') with module('com.madgag.spongycastle:bcpkix-jdk15on:1.58.0.0')
    }
}

Это решило мою проблему.

0 голосов
/ 07 сентября 2018

Вы можете попытаться форсировать предопределенные версии

configurations.all { 
    resolutionStrategy {
        failOnVersionConflict()
        force 'com.magdag.spongycastle:prov:1.58.0.0'
        force 'com.magdag.spongycastle:core:1.58.0.0'
    }
}

Может также произойти изменение в библиотеках из-за версий. Возможно удаленный или переименованный файл. Вы также можете попробовать принудительно установить версии 1.54.0.0

...