多个dex文件定义Lcom / google / zxing / BarcodeFormat

时间:2016-03-16 23:17:15

标签: android qr-code zxing

我正在创建一个应用程序,其中一个模块允许扫描Qrcode,另一个模块生成QRcode。

要生成QRcode,我正在使用此库:

    compile 'com.github.kenglxn.QRGen:android:2.1.0'

要扫描QR码,我正在使用此库:

    compile 'com.dlazaro66.qrcodereaderview:qrcodereaderview:1.0.0'

这两个库都在使用ZXING,这就是我在Android Studio中使用这个多重dex错误的原因。

请帮忙,以便我可以在我的gradle中包含这两个库。我知道可以使用"排除" ,但我不知道两个图书馆的哪个班级发生冲突。

4 个答案:

答案 0 :(得分:4)

对我来说,这是因为我的项目中存在重复的依赖项。

原来我在项目中通过不同的方式和不同的版本包含了zxing依赖。

其中一个来自使用最新版本的Facebook SDK,另一个已经通过.jar目录中的/libs文件包含在内,并且是一个古老的版本。

要解决此问题,我删除了Facebook SDK,找到旧版本,而不是直接包含jar,我将其替换为:

compile 'com.google.zxing:core:3.3.1'

在我的应用build.gradle

之后包括Facebook SDK,清理/重建没有问题。

答案 1 :(得分:2)

您需要启用 Multidex ,请检查图片的突出显示部分

enter image description here

答案 2 :(得分:2)

找到了解决方案。

我正在使用其他库,它使用相同的核心ZXing库生成QRcode到位图。

我做了什么:

    com.google.zxing.Writer writer = new QRCodeWriter();
// String finaldata = Uri.encode(data, "utf-8");
int width = 250;
int height = 250;
BitMatrix bm = writer
        .encode(data, BarcodeFormat.QR_CODE, width, height);
Bitmap ImageBitmap = Bitmap.createBitmap(width, height,
        Config.ARGB_8888);

for (int i = 0; i < width; i++) {// width
    for (int j = 0; j < height; j++) {// height
        ImageBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK
                : Color.WHITE);
    }
}

使用com.google.zxing.writer生成位图并将其设置为我的imageview。

谢谢@pranavjoshi

答案 3 :(得分:1)

您必须从冲突的依赖项之一中删除Zxing库,例如以下示例:

  implementation ('com.github.kenglxn.QRGen:android:2.5.0') {exclude group: 'com.google.zxing'}