Обновление плагина Android Gradle 4.1.0 приводит к сбою сканера штрих-кодов

#android #android-studio #android-gradle-plugin #barcode-scanner

#Android #android-studio #android-gradle-plugin #сканер штрих-кода

Вопрос:

https://github.com/KingsMentor/MobileVisionBarcodeScanner MobileVisionBarcodeScanner используется для сканирования QR-кода и успешно работает без каких-либо проблем, пока плагин Android Gradle не был обновлен до версии 4.1.0

Это происходит следующим образом

  1. Открывается действие сканера
  2. Нажмите кнопку назад, чтобы закрыть
  3. Сбой с последующей трассировкой стека

java.lang.RuntimeException: невозможно уничтожить activity {com.robusta.befit/com.robusta.befit.features.scanner.ScannerActivity}: java.lang.Исключение NullPointerException: попытка вызвать виртуальный метод ‘java.lang.Поток $State java.lang.Thread.getState()’ для нулевой ссылки на объект

Вызвано: java.lang.Исключение NullPointerException: попытка вызвать виртуальный метод ‘java.lang.Поток $State java.lang.Thread.getState()’ для нулевой ссылки на объект в com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSource$FrameProcessingRunnable.release(CameraSource.java:1117 ) в com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSource.release(CameraSource.java: 327) в com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview.release(CameraSourcePreview.java:84 ) в com.google.android.gms.samples.vision.barcodereader.Захват штрих-кода.onDestroy(BarcodeCapture.java:308)

(CameraSource.java: 1117

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

1. вы нашли какое-либо решение?

2. Мне посоветовали перейти только на ML KIT

Ответ №1:

Из журнала изменений плагина gradle 4.1:

Утверждения в отладочных сборках

Когда вы создаете отладочную версию своего приложения с помощью плагина Android Gradle 4.1.0 и выше, встроенный компилятор (D8) перепишет код вашего приложения, чтобы включить утверждения во время компиляции, поэтому у вас всегда есть активные проверки утверждений.

Комментарий к приведенному ниже коду заставит его работать

assert (mProcessingThread.getState() == State.TERMINATED);

Пожалуйста, обратите внимание: переход на ML Kit является постоянным решением.