問題來源
之前項目用的zxing包是下載到本地的度陆,由于比較舊,有客戶反映掃碼效果不太好抵蚊,所以昨天先對zxing-code進行了更新發(fā)現(xiàn)zxing前幾天都已經(jīng)更新到3.4.0了,相信使用zxing的小伙伴們最近也一定會陸續(xù)跟上更新的。zxing在github上的地址:
https://github.com/zxing/zxing
然而惧财,在更新了之后去歡樂的掃碼,確實比效率比舊版有不少的提升扭仁,但是在掃二維碼時發(fā)生了崩潰垮衷。慌了慌了乖坠,發(fā)生了什么搀突?趕緊再掃一下,還是崩潰熊泵!趕緊看日志:
跟進去發(fā)現(xiàn)報錯的根源是zxing-code里面的FinderPatternFinder.java:616報錯仰迁,你并不能修改。
possibleCenters.sort(moduleComparator);
追本溯源
看不到自己崩潰日志的同學可以參考下這篇文章Android開發(fā) 看不到崩潰的日志http://www.reibang.com/p/0274a558d23e顽分。
那么怎么解決呢徐许,既然是更新zxing-code之后發(fā)生的,趕緊看下zxing-code的更新日志:
原來在3.4.0更新是要求了使用java 8卒蘸,而我本地配置的還是1.7的jdk绊寻。趕緊更新了項目的jdk之后,滿以為解決了問題悬秉,然而還是失望了澄步,依然存在崩潰的問題。那問題就嚴重了和泌,想著在github上提個Issure讓作者團隊關(guān)注下這個問題村缸,一番查找發(fā)現(xiàn)已經(jīng)有人提這個問題了,而且就是昨天提的武氓。原文地址:https://github.com/zxing/zxing/issues/1170
解決方案
這里zxing的作者srowen已經(jīng)回答了此問題梯皿,他給出的解決方案是https://github.com/zxing/zxing/commit/4b573da62a175a16c59ef52df55edf08a413f4bf
大致意思是你的工程因為特殊原因不能升級到j(luò)ava 8,同時又必須支持API 24(Android 7.0)以下的手機县恕,那么請使用zxing-code 3.3.3的lib庫东羹。
而實際我也升級配置了java 8,依然存在問題忠烛,我的手機是ZTE BV0730,系統(tǒng)是 Android 6.0的属提。
小結(jié)
所以我總結(jié)的是,要么升級最低的支持版本放棄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配置恕酸,因為官方已經(jīng)指明了這一點堪滨。
BGAQRCode-Android
后來發(fā)現(xiàn)了一個非常方便的支持二維碼、條碼掃描的庫蕊温,BGAQRCode-Android袱箱,大家可以嘗試下,集成很方便义矛,支持zxing犯眠,zbar兩種方案,真實體驗zbar的效率真的很高(只是zbar不可以生成二維碼)https://github.com/githubZYQ/BGAQRCode-Android
原庫地址:https://github.com/bingoogolapple/BGAQRCode-Android
希望本文可以幫助到大家症革,有問題可以留言,謝謝鸯旁!
最后
祝所有人平安幸福噪矛、家庭和睦、身體健康铺罢。
愿世界和平艇挨,不再被戰(zhàn)爭所累。
有任何疑問韭赘,可以及時反饋給我缩滨;
如果你覺得還不錯,請點贊o( ̄▽ ̄)d泉瞻。