Gradle TransitiveDependency版本冲突

时间:2018-09-07 10:37:42

标签: android gradle android-gradle dependencies pdfbox

我一直在使用PDFBox为现有项目实现扩展的pdf创建API。 为了使用PDFBox,我需要在build.gradle中包括以下依赖项:

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

现有项目使用的依赖项之一是用于加密组件的海绵堡:

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

因此,我首先将两个依赖项都包含在我的build.gradle文件中, 尝试构建应用程序。这是我收到的例外:

  

程序类型已经存在:   org.spongycastle.cert.CertRuntimeException消息{kind = ERROR,   text =程序类型已经存在:   org.spongycastle.cert.CertRuntimeException,来源= [未知来源   文件],工具名称= Optional.of(D8)}

我认为出现此问题是由于pdfbox的传递依赖关系引起的版本冲突,它们是: enter image description here

我试图在build.gradle中使用dependency-exclude解决问题:

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

因为据我所知,我没有在pdfbox实现中直接使用加密方面。

2 个答案:

答案 0 :(得分:0)

您可以尝试force predefined versions

df['inv_id_temp'] = df['inv_id'].str.replace('.','')
df['left_match'] = df.apply(lambda x: x['amt_str']==x['inv_id_temp'][:len(x['amt_str'])],1)

df[['amount', 'inv_id','left_match']]

    amount  inv_id          left_match
0   309.90  30990071218     True
1   3130.00 313000B20180501 True
2   3330.50 33305020180425  True
3   17.35   13249261 100117 False
4   43.20   9037878 020418  False

由于版本的不同,它也可能会在库中发生变化。也许是删除或重命名的文件。您也可以尝试强制使用1.54.0.0版本

答案 1 :(得分:0)

非常感谢-我已经能够使用其他方法解决问题。

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')
    }
}

这解决了我的问题。