FlutterFire Firebase_ml_vision: PlatformException(ошибка 13, com.firebase.ml, механизм штрих-кода равен нулю, null)

Я использовал пакет firebase_ml_vision для сканирования кодов Qr в потоке изображений, предоставляемом пакетом camera. Все было хорошо до обновления, которое произошло 6 ноября. В Android я все еще могу сканировать qr-коды без проблем. Но в iOS у меня приложение выдает исключение: PlatformException(Error 13, com.firebase.ml, Barcode engine is nil., null)

Я обновил свой подфайл строкой pod 'GoogleMLKit/BarcodeScanning', потому что команда 'flutter build ios' завершилась с ошибкой, когда в Podfile pod 'Firebase/MLVisionBarcodeModel'вместо. Я сделал, потому что pod update Команда объяснила, что пакет Firebase/MLVisionBarcodeModel устарел, и сочла его источником проблемы.

Тем не менее проблема продолжает возникать.

Flutter doctor -v вывод:

[✓] Flutter (Channel stable, 1.22.4, on Mac OS X 10.15.6 19G73 darwin-x64, locale en-EC)
    • Flutter version 1.22.4 at /Applications/flutter_sdk/jaime/flutter
    • Framework revision 1aafb3a8b9 (3 weeks ago), 2020-11-13 09:59:28 -0800
    • Engine revision 2c956a31c0
    • Dart version 2.10.4

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/jvasquez/Library/Android/sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.1, Build version 12A7403
    • CocoaPods version 1.10.0

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 46.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.51.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.16.0

[!] Connected device
    ! No devices available

! Doctor found issues in 1 category.

Это код, который я использую для анализа CameraImage:

  static Future<List<Barcode>> detect({
    @required CameraImage image,
    // @required BarcodeDetector detector,
    @required int imageRotation,
  }) async {
    var rp = List<Barcode>();
    try {
      BarcodeDetector detector = FirebaseVision.instance.barcodeDetector(
        BarcodeDetectorOptions(
          barcodeFormats: BarcodeFormat.qrCode,
        )
      );
      var metadata = _buildMetaData(image, _rotationIntToImageRotation(imageRotation));
      FirebaseVisionImage visionImage = FirebaseVisionImage.fromBytes(_concatenatePlanes(image.planes), metadata);
      rp = await detector.detectInImage(visionImage);
    } catch (ex) {
      print("Ocurrió un error: $ex");
      // UtilFunctions.escribirEnLog(
      //   mensaje: "$ex",
      //   nombreFuncion: "detect",
      //   tipo: 0,
      // );
    }
    
    return rp;
  }

  static Uint8List _concatenatePlanes(List<Plane> planes) {
    final WriteBuffer allBytes = WriteBuffer();
    for (Plane plane in planes) {
      allBytes.putUint8List(plane.bytes);
    }
    return allBytes.done().buffer.asUint8List();
  }

1 ответ

Проблема в том, что firebase_ml_vision внутренне использует Firebase / MLVisionBarcodeModel, а не GoogleMLKit / BarcodeScanning.

В выпуске https://github.com/FirebaseExtended/flutterfire/issues/4625 другой пользователь разветвил пакет firebase_ml_vision и настроил его для работы с GoogleMLKit / BarcodeScanning. Для этой формы также есть PR ( https://github.com/FirebaseExtended/flutterfire/pull/5378). Важно отметить, что некоторые функции, особенно облачные, были удалены, чтобы они работали. Следовательно, это может привести к поломке частей вашего приложения, где эти функции отсутствуют, и это еще не лучшее решение.

Чтобы использовать разветвленный пакет, включите в свой Pubspec.yaml следующее:

      firebase_ml_vision:
git:
  url: git://github.com/algirdasmac/flutterfire
  path: packages/firebase_ml_vision
Другие вопросы по тегам