这是我得到的错误:
"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>
我读了很多关于这个问题的线索,或类似的东西,但我找不到解决方案。
我将不胜感激。
卢卡
答案 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
已被弃用。