zxing-core 3.4.0扫描二维码发生崩溃,日志发现:NoSuchMethodError

问题来源

之前项目用的zxing包是下载到本地的,由于比较旧,有客户反映扫码效果不太好,所以昨天先对zxing-code进行了更新发现zxing前几天都已经更新到3.4.0了,相信使用zxing的小伙伴们最近也一定会陆续跟上更新的。zxing在github上的地址:
https://github.com/zxing/zxing
然而,在更新了之后去欢乐的扫码,确实比效率比旧版有不少的提升,但是在扫二维码时发生了崩溃。慌了慌了,发生了什么?赶紧再扫一下,还是崩溃!赶紧看日志:
image.png
跟进去发现报错的根源是zxing-code里面的FinderPatternFinder.java:616报错,你并不能修改。

possibleCenters.sort(moduleComparator);

追本溯源

看不到自己崩溃日志的同学可以参考下这篇文章Android开发 看不到崩溃的日志https://www.jianshu.com/p/0274a558d23e
那么怎么解决呢,既然是更新zxing-code之后发生的,赶紧看下zxing-code的更新日志:
image.png
原来在3.4.0更新是要求了使用java 8,而我本地配置的还是1.7的jdk。赶紧更新了项目的jdk之后,满以为解决了问题,然而还是失望了,依然存在崩溃的问题。那问题就严重了,想着在github上提个Issure让作者团队关注下这个问题,一番查找发现已经有人提这个问题了,而且就是昨天提的。原文地址:https://github.com/zxing/zxing/issues/1170
作者回复

解决方案

这里zxing的作者srowen已经回答了此问题,他给出的解决方案是https://github.com/zxing/zxing/commit/4b573da62a175a16c59ef52df55edf08a413f4bf
大致意思是你的工程因为特殊原因不能升级到java 8,同时又必须支持API 24(Android 7.0)以下的手机,那么请使用zxing-code 3.3.3的lib库。
而实际我也升级配置了java 8,依然存在问题,我的手机是ZTE BV0730,系统是 Android 6.0的。

小结

所以我总结的是,要么升级最低的支持版本放弃7.0以下的手机

minSdkVersion 24

要么zxing-code的lib库老老实实的降回来,最高用到3.3.3

implementation 'com.google.zxing:core:3.3.3'

当然,不管你支不支持7.0以下的手机,如果你相拥3.4.0的库,都需要java 8+的jdk配置,因为官方已经指明了这一点。
#BGAQRCode-Android
后来发现了一个非常方便的支持二维码、条码扫描的库,BGAQRCode-Android,大家可以尝试下,集成很方便,支持zxing,zbar两种方案,真实体验zbar的效率真的很高(只是zbar不可以生成二维码)https://github.com/githubZYQ/BGAQRCode-Android
原库地址:https://github.com/bingoogolapple/BGAQRCode-Android

希望本文可以帮助到大家,有问题可以留言,谢谢!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值