Znane problemy

Problemy z Androidem

  • W przypadku com.google.mlkit:genai-prompt:1.0.0-beta3 i com.google.mlkit:genai-prompt:1.0.0-beta4 wywołanie download() powoduje zgłoszenie wyjątku java.lang.NoSuchMethodError po zakończeniu lub anulowaniu pobierania modelu, jeśli aplikacja rozpoznaje kotlinx-coroutines jako wersję 1.10.x lub starszą. Jako obejście tego problemu przypnij jawnie kotlinx-coroutines-android do 1.11.0 lub nowszej wersji w zależnościach Gradle, dopóki nie wprowadzimy poprawki w następnej wersji.
  • W com.google.mlkit:genai-prompt:1.0.0-beta3 i com.google.mlkit:genai-prompt:1.0.0-beta4 wnioskowanie z pamięcią podręczną prefiksów kończy się niepowodzeniem w przypadku modeli nano-v4, gdy parametr ModelConfig ma wartość ModelPreference.FAST. Aby obejść ten problem, pomiń ustawienie ModelConfig, aby użyć konfiguracji domyślnej, dopóki nie wprowadzimy poprawki w kolejnej wersji.
  • W com.google.mlkit:genai-prompt:1.0.0-beta3 wywołanie checkStatus() na urządzeniach innych niż Pixel powoduje nieobsłużony wyjątek GenAiException. Użyj nowszej wersji (com.google.mlkit:genai-prompt:1.0.0-beta4 lub nowszej).
  • W przypadku pakietu Language ID aplikacja może ulec awarii podczas uaktualniania do wtyczki Androida do obsługi Gradle w wersji 7.0.0 lub nowszej. Aby uniknąć awarii w wersji com.google.mlkit:language-id:16.1.1 lub starszej, dodaj poniższą regułę:
    -keep class com.google.mlkit.nl.languageid.internal.LanguageIdentificationJni { *; }
    Aby uniknąć awarii w przypadku com.google.mlkit:language-id:17.0.0 lub com.google.mlkit:language-id:17.0.1, uwzględnij poniższą regułę:
    -keep class com.google.mlkit.nl.languageid.internal.ThickLanguageIdentifier { *; }
  • Obiekt InputImage utworzony przez obiekt Bitmap z niezerową wartością rotationDegrees powoduje wystąpienie wyjątku „invalid rotation” MlKitException w przypadku interfejsu FaceDetection API, ponieważ com.google.mlkit:face-detection:16.0.5 i com.google.android.gms:play-services-mlkit-barcode-scanning:16.1.4. Użyj starszej wersji i poczekaj na kolejną wersję, która będzie zawierać poprawkę tego problemu.
  • Pakiety SDK do skanowania kodów kreskowych w wersjach wcześniejszych niż com.google.mlkit:barcode-scanning:16.1.0 i com.google.android.gms:play-services-mlkit-barcode-scanning:16.1.3 nie działają na niektórych urządzeniach z aparatem w wersji camera-camera2:1.0.0-beta08 lub nowszej. Aby obejść ten problem, możesz użyć starszej wersji camera-camera2. Na przykład:

    implementation "androidx.camera:camera-core:1.0.0-beta07"
    implementation "androidx.camera:camera-camera2:1.0.0-beta07"
    implementation "androidx.camera:camera-view:1.0.0-alpha14"
    implementation "androidx.camera:camera-extensions:1.0.0-alpha14"
    implementation "androidx.camera:camera-lifecycle:1.0.0-beta07"

  • Metody natywne mogą być zaciemnione przez reguły niestandardowe w wersji com.google.mlkit:language-id:16.1.1 lub starszej. Jeśli napotkasz błędy takie jak java.lang.UnsatisfiedLinkError, dodaj tę regułę, aby zachować te pliki:

    -keepclasseswithmembernames class com.google.mlkit.nl.languageid.internal.LanguageIdentificationJni {
      native <methods>;
    }

  • W przypadku interfejsów Text Recognition, Image Labeling oraz Object Detection and Tracking wydajność w przypadku CameraX i Camera2 nadal nie jest tak dobra jak w przypadku Camera1, ponieważ konwersja formatu obrazu z CameraX i Camera2 zajmuje więcej czasu.

  • Wywołania zwrotne zadań mogą być wykonywane po zniszczeniu aktywności lub fragmentu, w którym zostały zarejestrowane. Może to spowodować wyjątek, jeśli wywołanie zwrotne spróbuje uzyskać dostęp do detektora, który został w międzyczasie zamknięty. Jeśli używasz ML Kit w aktywności, możesz zarejestrować odbiornik o zakresie aktywności, który jest automatycznie usuwany po zatrzymaniu aktywności. Jeśli używasz ML Kit w fragmencie lub innym środowisku, możesz podać niestandardowy wykonawca, który zatrzymuje wykonywanie, gdy fragment zostanie zniszczony. Przykład znajdziesz w sekcji ScopedExecutor.Java w krótkim wprowadzeniu do Vision.

  • W przypadku etykietowania obrazów w formatach innych niż bitmapa wersja pakietowa ma lepszą wydajność niż wersja „cienka”, która zależy od Usług Google Play.

  • W przypadku Digital Ink w wersji com.google.mlkit:digital-ink-recognition:17.0.0 lub starszej i wyodrębniania jednostek w wersji com.google.mlkit:entity-extraction:16.0.0-beta2 lub starszej otrzymasz następujący wyjątek czasu działania, jeśli ustawisz wartość targetSdkVersion na 31 i uruchomisz aplikację na Androidzie S.

    Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
    AndroidRuntime: Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
    
    Ten problem został rozwiązany w nowszych wersjach.

    Jeśli wolisz używać starszych wersji, możesz ustawić wartość targetSdkVersion na mniej niż 31 lub dodać do build.gradle poniższy kod.

    // For apps targeting Android S+, add the following
    constraints {
      implementation 'androidx.work:work-runtime:2.7.0-alpha04'
    }

Problemy z iOS

  • Symulatory na komputerach Mac z układem M1 nie są obsługiwane.
  • Symulator X86_64 nie jest obsługiwany w przypadku tłumaczenia 'GoogleMLKit/Translate', '4.0.0' ani nowszego oraz inteligentnych odpowiedzi 'GoogleMLKit/SmartReply', '4.0.0' ani nowszych.