程序类型已存在:

时间:2018-04-16 16:02:59

标签: java android gradle

这是我得到的错误:

"Program type already present: com.google.zxing.client.android.camera.open.OpenCameraInterface"

我正在开发一个能够解码QR码的Android应用,并且我成功使用了com.dlazaro66.qrcodereaderview。

现在我还需要支持BarCode读取,我选择保持当前实现不变,并使用zxing library添加对BarCode读取的支持。

我在build.gradle文件中添加了以下内容:

 compile 'com.journeyapps:zxing-android-embedded:3.4.0'

它导致了这个问题!

以下两个:

dependencies {
compile 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.3'
compile 'com.journeyapps:zxing-android-embedded:3.4.0'
}

不兼容(如果我删除其中一个,我不再收到错误)。

我认为OpenCameraInterface类在前一个包中稍微改变了,它导致了一个不匹配,阻止了包含后一个包的项目成功构建。

我可以从头开始实现QrCode和BarCode,从一个通用的设计基础开始,但我会解决这个问题,要么从两个中的一个中排除一些模块,要么重新引导camera.open模块的包含。 / p>

我读了很多关于这个问题的线索,或类似的东西,但我找不到解决方案。

我将不胜感激。

卢卡

1 个答案:

答案 0 :(得分:0)

这两个库使用相同的包com.google.zxing:core:3.2.1

如果您使用gradle检查应用的依赖关系(进入终端,进入您的项目,请输入gradlew app:dependencies

+--- com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.3
|    \--- com.google.zxing:core:3.2.1
+--- com.journeyapps:zxing-android-embedded:3.4.0
|    +--- com.google.zxing:core:3.2.1
|    \--- com.android.support:support-v4:23.1.0
|         \--- com.android.support:support-annotations:23.1.0 

如果要从依赖项中排除此库,则必须

implementation ('com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.3') {
    exclude(group: "com.google.zxing", module:"core")
}
implementation 'com.journeyapps:zxing-android-embedded:3.4.0'

如果再次检查依赖项,则会找到

+--- com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.3
+--- com.journeyapps:zxing-android-embedded:3.4.0
|    +--- com.google.zxing:core:3.2.1
|    \--- com.android.support:support-v4:23.1.0
|         \--- com.android.support:support-annotations:23.1.0      

当然,您可以在第二个库中使用相同的exclude

ps:在排除库时,总是测试代码,代码可能会意外中断,而我使用implementation代替compile,因为compile已被弃用。