1

누구나 네이티브 메소드 호출에서 발생하는 예외를 처리 할 수있는 방법을 알고 있습니까?Google Vision API : 네이티브 크래시 처리

art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0x90 
    art/runtime/java_vm_ext.cc:410]  in call to NewStringUTF 
    art/runtime/java_vm_ext.cc:410]  from com.google.android.gms.vision.barcode.internal.NativeBarcode[] com.google.android.gms.vision.barcode.internal.NativeBarcodeDetector.recognizeNative(int, int, byte[], com.google.android.gms.vision.barcode.internal.NativeOptions) 
    art/runtime/java_vm_ext.cc:410] "Thread-4533" prio=5 tid=19 Runnable 
    art/runtime/java_vm_ext.cc:410] | group="main" sCount=0 dsCount=0 obj=0x12c8e0a0 self=0x7f849f4200 
    art/runtime/java_vm_ext.cc:410] | sysTid=9051 nice=0 cgrp=default sched=0/0 handle=0x7f7b7bf440 
    art/runtime/java_vm_ext.cc:410] | state=R schedstat=(1663092757 5060164 94) utm=165 stm=1 core=2 HZ=100 
    art/runtime/java_vm_ext.cc:410] | stack=0x7f7b6bd000-0x7f7b6bf000 stackSize=1037KB 
    art/runtime/java_vm_ext.cc:410] | held mutexes= "mutator lock"(shared held) 
    art/runtime/java_vm_ext.cc:410] native: #00 pc 00000000004897a8 /system/lib64/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+200) 
    art/runtime/java_vm_ext.cc:410] native: #01 pc 0000000000458644 /system/lib64/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEP12BacktraceMap+224) 
    art/runtime/java_vm_ext.cc:410] native: #02 pc 000000000030c9e4 /system/lib64/libart.so (_ZN3art9JavaVMExt8JniAbortEPKcS2_+1004) 
    art/runtime/java_vm_ext.cc:410] native: #03 pc 000000000030d29c /system/lib64/libart.so (_ZN3art9JavaVMExt9JniAbortVEPKcS2_St9__va_list+116) 
    art/runtime/java_vm_ext.cc:410] native: #04 pc 0000000000141f9c /system/lib64/libart.so (_ZN3art11ScopedCheck6AbortFEPKcz+144) 
    art/runtime/java_vm_ext.cc:410] native: #05 pc 000000000014a1d0 /system/lib64/libart.so (_ZN3art11ScopedCheck5CheckERNS_18ScopedObjectAccessEbPKcPNS_12JniValueTypeE.constprop.116+11084) 
    art/runtime/java_vm_ext.cc:410] native: #06 pc 0000000000153418 /system/lib64/libart.so (_ZN3art8CheckJNI12NewStringUTFEP7_JNIEnvPKc+468) 
    art/runtime/java_vm_ext.cc:410] native: #07 pc 0000000000005774 /data/data/com.google.android.gms/files/com.google.android.gms.vision/barcode/libs/arm64-v8a/libbarhopper.so (_ZN9barhopper9JniObject14SetStringFieldEPKcRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE+168) 
    art/runtime/java_vm_ext.cc:410] native: #08 pc 00000000000036f8 /data/data/com.google.android.gms/files/com.google.android.gms.vision/barcode/libs/arm64-v8a/libbarhopper.so (???) 
    art/runtime/java_vm_ext.cc:410] native: #09 pc 0000000000004c8c /data/data/com.google.android.gms/files/com.google.android.gms.vision/barcode/libs/arm64-v8a/libbarhopper.so (Java_com_google_android_gms_vision_barcode_internal_NativeBarcodeDetector_recognizeNative+84) 

내가 싶습니다 : PDF417 코드를하지만, 경우에 따라서는 네이티브 예외가 같은 NewStringUTF를 사용하기로 충돌 -

나는 Barcode Reader example from Google Vision API을하고 있는데, 그것은 아주 잘 일부 2D를 읽고 작품 그것을 잡으려고 사용자에게 약간의 피드백을주기 위해 충돌을 처리하십시오.

답변

1

불행히도 여러분의 고유 코드가 아닌 예외를 처리 할 방법이 없습니다.

나는 google-vision과 비슷한 문제가있었습니다. Google 비전 github에이 문제를보고했습니다. https://github.com/googlesamples/android-vision

슬프게도이 라이브러리에는 몇 가지 버그가 있습니다. 제 경우에는 바코드 텍스트 파서의 버그였습니다. 문제를보고하면 멋지게 될 것입니다.

자신의 네이티브 코드에서 예외를 잡을 수있는 방법이 있다는 흥미로운 일이 될 수 있습니다 나는 [문제]를보고 한 @Ivan Catching exceptions thrown from native code running on Android

+1

감사 (https://github.com/googlesamples/android- 비전/문제/221)하지만 구글 엔지니어는 그 repo에 대해 매우 세심하지 않다. 우리는 ZXing 라이브러리를 사용할 것이라고 생각하지만 2D 코드를 읽는 것은 매우 느리다. 실시간으로 보여주는 빠른 프로젝트가 있는가? 안드로이드 용 ABBYY로 코드 탐지? –

+0

[여기를보실 수 있습니다.] (https://www.abbyy.com/mobile-ocr/features/) 바코드가 있습니다. 그러나 실시간은 없습니다. 빨리 작동하면 사용하여 실시간으로 작성할 수 있습니다. 샘플은 "시험 사용"에서 사용할 수 있습니다. –

+0

프레임을 카메라에서 허용되는 형식으로 빨리 변환하려면 https://developer.android.com/reference/android/renderscript/ScriptIntrinsic.html –

관련 문제