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

悲しいことに、このライブラリにはいくつかのバグがあります。私の場合、バーコード・テキスト・パーサーのバグでした。 問題を報告してもクールです。

あなた自身のネイティブコードから例外をキャッチする方法があることは興味深いものがあります。私は[問題](https://github.com/googlesamples/android-を報告しましたCatching exceptions thrown from native code running on Android

+1

おかげ@Ivanビジョン/ issues/221)しかし、Googleのエンジニアはそのレポにあまり注意を払っていないようだが、ZXingライブラリを使用していると思うが、2Dコードを読むのが非常に遅い。 Android用のABBYYによるコード検出? –

+0

[こちらをご覧ください](https://www.abbyy.com/mobile-ocr/features/)バーコードの読み取りがあります。しかし、リアルタイムではありません。それが速く働くなら、それを使ってあなた自身のリアルタイムを書き込むことができます。サンプルは "試用版"から入手できます。 –

+0

フレームをカメラから許容可能な形式に高速に変換するには、https://developer.android.com/reference/android/renderscript/ScriptIntrinsic.html –

関連する問題