Android 问题
- 对于捆绑的语言 ID,应用在升级到 AGP 7.0.0 或更高版本时可能会崩溃。
如需避免在
com.google.mlkit:language-id:16.1.1
或更低版本中发生崩溃,请添加以下规则: 为避免-keep class com.google.mlkit.nl.languageid.internal.LanguageIdentificationJni { *; }
com.google.mlkit:language-id:17.0.0
或com.google.mlkit:language-id:17.0.1
发生崩溃,请添加以下规则:-keep class com.google.mlkit.nl.languageid.internal.ThickLanguageIdentifier { *; }
- 从
com.google.mlkit:face-detection:16.0.5
和com.google.android.gms:play-services-mlkit-barcode-scanning:16.1.4
开始,使用非零 rotationDegrees 由 Bitmap 构建的 InputImage 会导致 FaceDetection API 出现“无效旋转”MlKitException。请使用较低版本,并等待我们发布包含此问题修复程序的下一版本。 在运行 camera-camera2:1.0.0-beta08 或更高版本的某些设备上,早于
com.google.mlkit:barcode-scanning:16.1.0
和com.google.android.gms:play-services-mlkit-barcode-scanning:16.1.3
的 BarcodeScanning SDK 不起作用。您可以使用较低版本的 camera-camera2 来规避此问题。例如: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"
在
com.google.mlkit:language-id:16.1.1
或更低版本中,原生方法可能会被自定义规则混淆。如果您遇到java.lang.UnsatisfiedLinkError
等错误,请添加以下规则以保留它们:-keepclasseswithmembernames class com.google.mlkit.nl.languageid.internal.LanguageIdentificationJni { native <methods>; }
对于文本识别、给图片加标签以及物体检测和跟踪 API,CameraX 和 Camera2 的性能仍不及 Camera1,因为从 CameraX 和 Camera2 对图片执行格式转换需要更多时间。
任务回调可能会在其注册的 activity 或 fragment 被销毁后执行。如果回调尝试访问在此期间已关闭的检测器,则可能会导致异常。如果您要在 activity 中使用 ML Kit,可以注册一个activity 级监听器,该监听器会在 activity 停止时自动移除。如果您在 fragment 或其他环境中使用 ML Kit,则可以提供一个自定义执行器,以便在 fragment 被销毁时关闭执行。如需查看示例,请参阅 Vision 快速入门中的
ScopedExecutor.Java
。对于使用位图以外图片格式的图片标注功能,捆绑变体比依赖于 Google Play 服务的“瘦”变体具有更好的性能。
对于数字手写
com.google.mlkit:digital-ink-recognition:17.0.0
或更低版本以及实体提取com.google.mlkit:entity-extraction:16.0.0-beta2
或更低版本,如果您将targetSdkVersion
设置为 31 并在 Android S 上运行,则会收到以下运行时异常。 此问题已在较新版本中得到修复。Targeting S+ (version 31 and above) requires that one of
FLAG_IMMUTABLE
orFLAG_MUTABLE
be specified when creating aPendingIntent
. AndroidRuntime: Strongly consider usingFLAG_IMMUTABLE
, only useFLAG_MUTABLE
if some functionality depends on thePendingIntent
being mutable, e.g. if it needs to be used with inline replies or bubbles.如果您更喜欢使用旧版本,可以将
targetSdkVersion
设为小于 31,或者将以下代码添加到build.gradle
中作为权宜解决方法。// For apps targeting Android S+, add the following constraints { implementation 'androidx.work:work-runtime:2.7.0-alpha04' }
iOS 问题
- 不支持基于 M1 的 Mac 上的模拟器。
- X86_64 模拟器不支持翻译
'GoogleMLKit/Translate', '4.0.0'
或更高版本,也不支持智能回复'GoogleMLKit/SmartReply', '4.0.0'
或更高版本。