Решил ли MLKit barcode reader встроенную проблему сбоя, которая присутствовала в сканере штрих-кодов Mobile Vision API?

#android #firebase #firebase-mlkit

#Android #firebase #firebase-mlkit

Вопрос:

Я использовал Mobile Vision API для обнаружения штрих-кодов с помощью потока камеры, точно так же, как в этом примере:https://github.com/googlesamples/android-vision/tree/master/visionSamples/barcode-reader , к сожалению, существует проблема, при которой приложение вылетает на ровном месте из-за разыменования нулевого указателя в собственном коде устройства чтения штрих-кодов, см. Выпуск # 351.

Хотя проблема, о которой сообщалось, на устройстве Pixel, я обнаружил тот же stacktrace на своих Samsung Tab A устройствах, работающих под управлением Android 7 и 8, вот stacktrace ошибки

  Build fingerprint: 'samsung/gta2xlltespr/gta2xlltespr:8.1.0/M1AJQ/T597PVPU1ASA2:user/release-keys'
03-13 15:42:47.077 F/DEBUG   (11969): Revision: '7'
03-13 15:42:47.077 F/DEBUG   (11969): ABI: 'arm'
03-13 15:42:47.078 F/DEBUG   (11969): pid: 11696, tid: 11874, name: Thread-24 03-13 15:42:47.078 F/DEBUG   (11969): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xc
03-13 15:42:47.078 F/DEBUG   (11969): Cause: null pointer dereference
03-13 15:42:47.078 F/DEBUG   (11969):     r0 ea09c5a8  r1 a25b973a  r2 ea09b6d0  r3 00000000
03-13 15:42:47.078 F/DEBUG   (11969):     r4 00000000  r5 ea09b6d0  r6 c7b967f0  r7 c7b96904
03-13 15:42:47.078 F/DEBUG   (11969):     r8 00000022  r9 00000001  sl 43dc8000  fp 44518000
03-13 15:42:47.078 F/DEBUG   (11969):     ip eb2b3d58  sp c7b967e0  lr eb28a345  pc c8951c12  cpsr 200d0030
03-13 15:42:47.080 F/DEBUG   (11969): 
03-13 15:42:47.080 F/DEBUG   (11969): backtrace:
03-13 15:42:47.080 F/DEBUG   (11969):     #00 pc 00011c12  /data/data/com.google.android.gms/app_vision/barcode/libs/armeabi-v7a/libbarhopper.so
03-13 15:42:47.080 F/DEBUG   (11969):     #01 pc 0000a345  /data/data/com.google.android.gms/app_vision/barcode/libs/armeabi-v7a/libbarhopper.so
03-13 15:42:47.080 F/DEBUG   (11969):     #02 pc 0000331d  /data/data/com.google.android.gms/app_vision/barcode/libs/armeabi-v7a/libbarhopper.so
03-13 15:42:47.080 F/DEBUG   (11969):     #03 pc 000043df  /data/data/com.google.android.gms/app_vision/barcode/libs/armeabi-v7a/libbarhopper.so
03-13 15:42:47.081 F/DEBUG   (11969):     #04 pc 00001e63  /data/data/com.google.android.gms/app_vision/barcode/libs/armeabi-v7a/libbarhopper.so
03-13 15:42:47.081 F/DEBUG   (11969):     #05 pc 00002a91  /data/data/com.google.android.gms/app_vision/barcode/libs/armeabi-v7a/libbarhopper.so
03-13 15:42:47.081 F/DEBUG   (11969):     #06 pc 00000adf  /data/user_de/0/com.google.android.gms/app_chimera/m/00000034/oat/arm/DynamiteModulesA.odex (offset 0x6000)

  

Это важная функция в моем текущем приложении, и я был бы очень признателен, если бы кто-нибудь сказал мне, безопасно ли использовать MLKit.

Ответ №1:

SIGSEGV псевдоним 11 означает ошибку сегментации; адрес памяти 0xc не сопоставлен объекту; это определяет siginfo.h, и это вызвано доступом к адресу, который не был выделен (это почти то же самое, что IndexOutOfBoundsException в Java , но на уровне выделения памяти).

пример приложения использует безнадежно устаревшие зависимости. лучше попробуйте текущую версию:

 implementation "com.google.android.gms:play-services-base:16.1.0"
implementation "com.google.android.gms:play-services-vision:17.0.2"
  

трудно сказать, является ли это «сохранить», потому что в вопросе не содержится наименьшего кода — и при этом не указывается, какую версию библиотеки вы используете. таким образом, это невозможно воспроизвести надежным способом.

Комментарии:

1. Я забыл добавить, но я использую эту версию сервисов Google Play в build.gradle classpath 'com.google.gms:google-services:4.2.0' В app / build.gradle implementation 'com.google.android.gms:play-services-vision:17.0.2'