Google条码扫描ML Kit:部分设备Activity崩溃问题求助
更新说明:
自2023年3月21日的更新后,该问题可能已修复,也可能未解决。 若您想使用该组件,可查看官方文档了解更多信息。
再次说明:我们尚未测试当前版本是否正常工作。为快速恢复条码扫描功能,我们已重构自定义Capacitor插件,改用com.google.mlkit:barcode-scanning:17.1.0。相关详情可查看对应文档。这种方式需要自行实现UI,且丢失了炫酷的扫描动画,但能稳定运行,速度似乎更快。
我们使用com.google.android.gms:play-services-code-scanner:16.0.0-beta3结合自定义Capacitor插件,用于扫描EAN-13、EAN-8等条码,但在部分设备上,用户尝试打开Google条码扫描UI时,Activity会崩溃。
以下是logcat中的错误日志:
win=Window{f8c052d u0 com.[redacted]/com.google.mlkit.vision.codescanner.internal.GmsBarcodeScanningDelegateActivity} destroySurfaces: appStopped=true cleanupOnResume=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=4 caller=com.android.server.wm.ActivityRecord.destroySurfaces:6529 com.android.server.wm.ActivityRecord.destroySurfaces:6510 com.android.server.wm.ActivityRecord.notifyAppStopped:6574 com.android.server.wm.ActivityRecord.activityStopped:7162 com.android.server.wm.ActivityClientController.activityStopped:258 android.app.IActivityClientController$Stub.onTransact:613 com.android.server.wm.ActivityClientController.onTransact:136
处理扫描UI的代码如下:
package com.[redacted]; import com.getcapacitor.JSObject; import com.getcapacitor.Plugin; import com.getcapacitor.PluginCall; import com.getcapacitor.PluginMethod; import com.getcapacitor.annotation.CapacitorPlugin; import com.google.mlkit.vision.barcode.common.Barcode; import com.google.mlkit.vision.codescanner.GmsBarcodeScannerOptions; import com.google.mlkit.vision.codescanner.GmsBarcodeScanning; @CapacitorPlugin() public class BarcodeScanner extends Plugin { private void scan() { GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(Barcode.FORMAT_EAN_13, Barcode.FORMAT_EAN_8, Barcode.FORMAT_CODE_128, Barcode.FORMAT_ITF) .allowManualInput() .build(); GmsBarcodeScanning .getClient(getContext(), options) .startScan() .addOnSuccessListener(this::onSuccess); } private void onSuccess(Barcode result) { JSObject jsObject = new JSObject(); jsObject.put("content", result.getDisplayValue()); jsObject.put("format", result.getFormat()); this.getSavedCall().success(jsObject); } @PluginMethod public void startScan(PluginCall call) { this.saveCall(call); this.scan(); } }
相关版本信息:
minSdkVersion = 23 compileSdkVersion = 33 targetSdkVersion = 33 androidxActivityVersion = '1.6.1' androidxAppCompatVersion = '1.6.1' androidxCoordinatorLayoutVersion = '1.2.0' androidxCoreVersion = '1.9.0' androidxFragmentVersion = '1.5.5' coreSplashScreenVersion = '1.0.0-rc01' androidxWebkitVersion = '1.6.0' junitVersion = '4.13.2' androidxJunitVersion = '1.1.5' androidxEspressoCoreVersion = '3.5.1' cordovaAndroidVersion = '10.1.1'
我们已将Android Webview更新至最新版本,同时更新了应用及Capacitor插件build.gradle文件中的所有依赖包。由于错误描述非常模糊,我们无法确定问题原因,也未找到解决方案。该问题出现在Galaxy Tab S7上,此前该设备可正常运行,突然无法使用,可能是由于未知的内部更新导致。我们在Samsung Galaxy A51上测试,功能正常。
内容的提问来源于stack exchange,提问作者fruityloops
相关产品推荐
相关产品推荐

