devilsen/CZXing

识别图片 第二次必无法识别 过一会必崩

Closed this issue · 2 comments

大佬 我用了你的lib做webview长按识别
第一次能成功识别
第二次必无法识别

A/zygote64: java_vm_ext.cc:534] JNI DETECTED ERROR IN APPLICATION: thread Thread[63,tid=16222,Native,Thread*=0x765f767e00,peer=0x136c50c8,"RxCachedThreadScheduler-3"] using JNIEnv* from thread Thread[58,tid=16215,Runnable,Thread*=0x7670e67a00,peer=0x137d1fb8,"RxCachedThreadScheduler-2"]
A/zygote64: java_vm_ext.cc:534] in call to GetLongField
A/zygote64: java_vm_ext.cc:534] from int me.devilsen.czxing.code.NativeSdk.readBarcode(long, android.graphics.Bitmap, int, int, int, int, java.lang.Object[])
A/zygote64: java_vm_ext.cc:534] "RxCachedThreadScheduler-3" daemon prio=5 tid=63 Runnable
A/zygote64: java_vm_ext.cc:534] | group="main" sCount=0 dsCount=0 flags=0 obj=0x136c50c8 self=0x765f767e00
A/zygote64: java_vm_ext.cc:534] | sysTid=16222 nice=0 cgrp=default sched=0/0 handle=0x76702fa4f0
A/zygote64: java_vm_ext.cc:534] | state=R schedstat=( 188341662 29646356 184 ) utm=16 stm=2 core=0 HZ=100
A/zygote64: java_vm_ext.cc:534] | stack=0x76701f8000-0x76701fa000 stackSize=1037KB
A/zygote64: java_vm_ext.cc:534] | held mutexes= "mutator lock"(shared held)
A/zygote64: java_vm_ext.cc:534] native: #00 pc 00000000003c971c /system/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*)+208)
A/zygote64: java_vm_ext.cc:534] native: #1 pc 000000000049990c /system/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits>&, bool, BacktraceMap*, bool) const+348)
A/zygote64: java_vm_ext.cc:534] native: #2 pc 00000000002fc6a4 /system/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1048)
A/zygote64: java_vm_ext.cc:534] native: #3 pc 00000000002fca94 /system/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+116)
A/zygote64: java_vm_ext.cc:534] native: #4 pc 000000000010df4c /system/lib64/libart.so (art::ScopedCheck::AbortF(char const*, ...)+148)
A/zygote64: java_vm_ext.cc:534] native: #5 pc 000000000010d944 /system/lib64/libart.so (art::ScopedCheck::CheckThread(_JNIEnv*)+172)
A/zygote64: java_vm_ext.cc:534] native: #6 pc 000000000010bf4c /system/lib64/libart.so (art::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::JniValueType*)+644)
A/zygote64: java_vm_ext.cc:534] native: #7 pc 0000000000113394 /system/lib64/libart.so (art::CheckJNI::GetField(char const*, _JNIEnv*, _jobject*, _jfieldID*, bool, art::Primitive::Type)+652)
A/zygote64: java_vm_ext.cc:534] native: #8 pc 0000000000125560 /system/lib64/libandroid_runtime.so (android::bitmap::imageInfo(_JNIEnv*, _jobject*, AndroidBitmapInfo*)+32)
A/zygote64: java_vm_ext.cc:534] native: #9 pc 00000000000007b8 /system/lib64/libjnigraphics.so (AndroidBitmap_getInfo+32)
A/zygote64: java_vm_ext.cc:534] native: #10 pc 00000000000c7cd0 /data/app/com.a.b-QN2l6-M9x6WOGLjxLjOmZA==/lib/arm64/libczxing.so (BitmapToMat(_JNIEnv*, _jobject*, cv::Mat&)+52)
A/zygote64: java_vm_ext.cc:534] native: #11 pc 00000000000c4944 /data/app/com.a.b-QN2l6-M9x6WOGLjxLjOmZA==/lib/arm64/libczxing.so (ImageScheduler::readBitmap(_jobject*, int, int, int, int)+140)
A/zygote64: java_vm_ext.cc:534] native: #12 pc 00000000000cabd0 /data/app/com.a.b-QN2l6-M9x6WOGLjxLjOmZA==/lib/arm64/libczxing.so (Java_me_devilsen_czxing_code_NativeSdk_readBarcode+64)
A/zygote64: java_vm_ext.cc:534] native: #13 pc 000000000000a460 /data/app/com.a.b-QN2l6-M9x6WOGLjxLjOmZA==/oat/arm64/base.odex (Java_me_devilsen_czxing_code_NativeSdk_readBarcode__JLandroid_graphics_Bitmap_2IIII_3Ljava_lang_Object_2+224)
A/zygote64: java_vm_ext.cc:534] at me.devilsen.czxing.code.NativeSdk.readBarcode(Native method)
A/zygote64: java_vm_ext.cc:534] at me.devilsen.czxing.code.BarcodeReader.read(BarcodeReader.java:57)
A/zygote64: java_vm_ext.cc:534] at com.gqp.news.mvp.ui.activity.WebActivity$11.subscribe(WebActivity.java:575)
A/zygote64: java_vm_ext.cc:534] at io.reactivex.internal.operators.observable.ObservableCreate.subscribeActual(ObservableCreate.java:40)
A/zygote64: java_vm_ext.cc:534] at io.reactivex.Observable.subscribe(Observable.java:12005)
A/zygote64: java_vm_ext.cc:534] at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
A/zygote64: java_vm_ext.cc:534] at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:571)
A/zygote64: java_vm_ext.cc:534] at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
A/zygote64: java_vm_ext.cc:534] at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
A/zygote64: java_vm_ext.cc:534] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
A/zygote64: java_vm_ext.cc:534] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
A/zygote64: java_vm_ext.cc:534] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
A/zygote64: java_vm_ext.cc:534] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
A/zygote64: java_vm_ext.cc:534] at java.lang.Thread.run(Thread.java:764)

而且在大约1分40秒之后必然出现一次崩溃

A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
A/DEBUG: LineageOS Version: 'unknown'
A/DEBUG: Build fingerprint: 'honor/FRD-AL10/HWFRD:8.0.0/HUAWEIFRD-AL10/540(C00):user/release-keys'
A/DEBUG: Revision: '0'
A/DEBUG: ABI: 'arm64'
A/DEBUG: pid: 16041, tid: 16222, name: RxCachedThreadS >>> com.a.b <<<
A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
A/DEBUG: Abort message: 'java_vm_ext.cc:534] JNI DETECTED ERROR IN APPLICATION: thread Thread[63,tid=16222,Native,Thread*=0x765f767e00,peer=0x136c50c8,"RxCachedThreadScheduler-3"] using JNIEnv* from thread Thread[58,tid=16215,Runnable,Thread*=0x7670e67a00,peer=0x137d1fb8,"RxCachedThreadScheduler-2"]'
A/DEBUG: x0 0000000000000000 x1 0000000000003f5e x2 0000000000000006 x3 0000000000000008
A/DEBUG: x4 0000000000000000 x5 0000000000000000 x6 0000000000000000 x7 7f7f7f7f7f7f7f7f
A/DEBUG: x8 0000000000000083 x9 f5c102a3d55daf7f x10 0000000000000000 x11 0000000000000001
A/DEBUG: x12 ffffffffffffffff x13 ffffffffffffffff x14 ff00000000000000 x15 ffffffffffffffff
A/DEBUG: x16 00000061f705afa8 x17 00000077108bf05c x18 0000007672c0b450 x19 0000000000003ea9
A/DEBUG: x20 0000000000003f5e x21 00000076821a2540 x22 0000000000000002 x23 00000076702f6879
A/DEBUG: x24 0000000000000fc8 x25 0000007673190000 x26 0000000000000fc7 x27 00000076702f6930
A/DEBUG: x28 0000000000000059 x29 00000076702f6820 x30 0000007710873a2c
A/DEBUG: sp 00000076702f67e0 pc 0000007710873a48 pstate 0000000060000000
A/DEBUG: backtrace:
A/DEBUG: #00 pc 000000000001da48 /system/lib64/libc.so (abort+104)
A/DEBUG: #1 pc 0000000000472854 /system/lib64/libart.so (art::Runtime::Abort(char const*)+552)
A/DEBUG: #2 pc 0000000000567a6c /system/lib64/libart.so (android::base::LogMessage::~LogMessage()+996)
A/DEBUG: #3 pc 00000000002fc930 /system/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1700)
A/DEBUG: #4 pc 00000000002fca94 /system/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+116)
A/DEBUG: #5 pc 000000000010df4c /system/lib64/libart.so (art::ScopedCheck::AbortF(char const*, ...)+148)
A/DEBUG: #6 pc 000000000010d944 /system/lib64/libart.so (art::ScopedCheck::CheckThread(_JNIEnv*)+172)
A/DEBUG: #7 pc 000000000010bf4c /system/lib64/libart.so (art::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::JniValueType*)+644)
A/DEBUG: #8 pc 0000000000113394 /system/lib64/libart.so (art::CheckJNI::GetField(char const*, _JNIEnv*, _jobject*, _jfieldID*, bool, art::Primitive::Type)+652)
A/DEBUG: #9 pc 0000000000125560 /system/lib64/libandroid_runtime.so (android::bitmap::imageInfo(_JNIEnv*, _jobject*, AndroidBitmapInfo*)+32)
A/DEBUG: #10 pc 00000000000007b8 /system/lib64/libjnigraphics.so (AndroidBitmap_getInfo+32)
A/DEBUG: #11 pc 00000000000c7cd0 /data/app/com.a.b-QN2l6-M9x6WOGLjxLjOmZA==/lib/arm64/libczxing.so (BitmapToMat(_JNIEnv*, _jobject*, cv::Mat&)+52)
A/DEBUG: #12 pc 00000000000c4944 /data/app/com.a.b-QN2l6-M9x6WOGLjxLjOmZA==/lib/arm64/libczxing.so (ImageScheduler::readBitmap(_jobject*, int, int, int, int)+140)
A/DEBUG: #13 pc 00000000000cabd0 /data/app/com.a.b-QN2l6-M9x6WOGLjxLjOmZA==/lib/arm64/libczxing.so (Java_me_devilsen_czxing_code_NativeSdk_readBarcode+64)
A/DEBUG: #14 pc 000000000004b460 /data/app/com.a.b-QN2l6-M9x6WOGLjxLjOmZA==/oat/arm64/base.odex (offset 0x41000)

请问如何处理
我用的是
BarcodeReader.read(bitmap;这个方法

另外
BarcodeReader.read(byte[] data, int cropLeft, int cropTop, int cropWidth, int cropHeight, int rowWidth, int rowHeight)
这个函数在识别图片时如何使用,我使用这个函数时,是必然崩溃,第一次就崩溃

A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
A/DEBUG: LineageOS Version: 'unknown'
A/DEBUG: Build fingerprint: 'honor/FRD-AL10/HWFRD:8.0.0/HUAWEIFRD-AL10/540(C00):user/release-keys'
A/DEBUG: Revision: '0'
A/DEBUG: ABI: 'arm64'
A/DEBUG: pid: 17259, tid: 17432, name: RxCachedThreadS >>> com.a.b <<<
A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
A/DEBUG: Cause: null pointer dereference
A/DEBUG: x0 00000076711fc148 x1 00000076711fc148 x2 0000000000000000 x3 0000000000000000
A/DEBUG: x4 0000000000000160 x5 00000000000000b4 x6 0000000000000160 x7 00000000000000b4
A/DEBUG: x8 0000000000000000 x9 0000000000000001 x10 0000000000000000 x11 000000768d16f7b8
A/DEBUG: x12 000000771180cdb0 x13 1754312f940c947d x14 000000770edfb000 x15 ffffffffffffffff
A/DEBUG: x16 0000007615bc7858 x17 00000077108bf2b8 x18 00000076711fc7e0 x19 0000007684e24620
A/DEBUG: x20 0000007684e245f0 x21 00000076711fc148 x22 0000000000000000 x23 00000076711fc218
A/DEBUG: x24 0000007682040200 x25 0000000000000160 x26 00000000000000b4 x27 0000007684e245c0
A/DEBUG: x28 000000007746700c x29 00000076711fc130 x30 00000076157433dc
A/DEBUG: sp 00000076711fc110 pc 0000000000000000 pstate 0000000060000000
A/DEBUG: backtrace:
A/DEBUG: #00 pc 0000000000000000
A/DEBUG: #1 pc 00000000000c33d8 /data/app/com.a.b-oxJG9PPz-V4Y7wASZx-Lag==/lib/arm64/libczxing.so (SafeQueue::enQueue(FrameData)+140)
A/DEBUG: #2 pc 00000000000c3324 /data/app/com.a.b-oxJG9PPz-V4Y7wASZx-Lag==/lib/arm64/libczxing.so (ImageScheduler::process(signed char*, int, int, int, int, int, int)+88)
A/DEBUG: #3 pc 00000000000cab50 /data/app/com.a.b-oxJG9PPz-V4Y7wASZx-Lag==/lib/arm64/libczxing.so (Java_me_devilsen_czxing_code_NativeSdk_readBarcodeByte+120)
A/DEBUG: #4 pc 000000000004b5c4 /data/app/com.a.b-oxJG9PPz-V4Y7wASZx-Lag==/oat/arm64/base.odex (offset 0x41000)

机型 华为荣耀8全网通4+64 android8.1

看下是不是混淆有一部分问题;还有一个是不是线程的问题,你可以先放到主线程试下会不会有问题,之后再尝试用RxJava;如果还是有问题的话,可以加群讨论:287113918

看下是不是混淆有一部分问题;还有一个是不是线程的问题,你可以先放到主线程试下会不会有问题,之后再尝试用RxJava;如果还是有问题的话,可以加群讨论:287113918

我没用混淆,主线程操作成功了,没有so的报错了。
一开始就是用的rxjava 在io线程处理的。
如果我想在非主线程内操作,请问如何处理?