Skip to content

Xamarin.Google.MLKit.Common.MlKitException: Failed to initialize detector #1296

@jaimeatsherpa

Description

@jaimeatsherpa

Description

Im using ImageAnalysis to detect objects. This is how I create the detector:

var options = new ObjectDetectorOptions.Builder()
      .SetDetectorModeAlternative(ObjectDetectorOptionsBase.StreamMode)
      .EnableMultipleObjectsAlternative()  
      .EnableClassificationAlternative()    
      .Build();

detector = ObjectDetection.GetClient(options);

Then I call:

var result = await detector.Process(input);

However that line thows:

{Xamarin.Google.MLKit.Common.MlKitException: Failed to initialize detector. ---> Java.IO.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed --- End of managed Java.IO.FileNotFoundException stack trace --- java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed at android.content.res.AssetManager.nativeOpenAssetFd(Native Method) at android.content.res.AssetManager.openFd(AssetManager.java:1074) at com.google.mlkit.vision.vkp.PipelineManager.zzb(com.google.mlkit:vision-internal-vkp@@18.2.3:1) at com.google.mlkit.vision.vkp.PipelineManager.start(com.google.mlkit:vision-internal-vkp@@18.2.3:22) at com.google.mlkit.vision.objects.defaults.internal.zze.load(com.google.mlkit:object-detection@@17.0.2:16) at com.google.mlkit.common.sdkinternal.ModelResource.zza(com.google.mlkit:common@@18.11.0:4) at com.google.mlkit.common.sdkinternal.zzn.run(Unknown Source:10) at com.google.mlkit.common.sdkinternal.zzt.run(com.google.mlkit:common@@18.11.0:2) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zze(com.google.mlkit:common@@18.11.0:4) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzc(com.google.mlkit:common@@18.11.0:1) at com.google.mlkit.common.sdkinternal.zzi.run(Unknown Source:2) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzd(com.google.mlkit:common@@18.11.0:2) at com.google.mlkit.common.sdkinternal.zzk.run(Unknown Source:2) at java.lang.Thread.run(Thread.java:1012) --- End of managed Java.IO.FileNotFoundException stack trace --- java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed at android.content.res.AssetManager.nativeOpenAssetFd(Native Method) at android.content.res.AssetManager.openFd(AssetManager.java:1074) at com.google.mlkit.vision.vkp.PipelineManager.zzb(com.google.mlkit:vision-internal-vkp@@18.2.3:1) at com.google.mlkit.vision.vkp.PipelineManager.start(com.google.mlkit:vision-internal-vkp@@18.2.3:22) at com.google.mlkit.vision.objects.defaults.internal.zze.load(com.google.mlkit:object-detection@@17.0.2:16) at com.google.mlkit.common.sdkinternal.ModelResource.zza(com.google.mlkit:common@@18.11.0:4) at com.google.mlkit.common.sdkinternal.zzn.run(Unknown Source:10) at com.google.mlkit.common.sdkinternal.zzt.run(com.google.mlkit:common@@18.11.0:2) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zze(com.google.mlkit:common@@18.11.0:4) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzc(com.google.mlkit:common@@18.11.0:1) at com.google.mlkit.common.sdkinternal.zzi.run(Unknown Source:2) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzd(com.google.mlkit:common@@18.11.0:2) at com.google.mlkit.common.sdkinternal.zzk.run(Unknown Source:2) at java.lang.Thread.run(Thread.java:1012) --- End of inner exception stack trace --- at DocumentScanner.DocumentAnalyzer.ProcessAsync(InputImage input, IImageProxy image, Int32 rotationDegrees) in C:\Users\jbern\source\repos\Sherpa\App\library\DocumentScanner\Platforms\Android\DocumentAnalyzer.cs:line 44 at DocumentScanner.BaseAndroidAnalyzer.Analyze(IImageProxy image) in C:\Users\jbern\source\repos\Sherpa\App\library\DocumentScanner\Platforms\Android\BaseAndroidAnalyzer.cs:line 26 --- End of managed Xamarin.Google.MLKit.Common.MlKitException stack trace --- com.google.mlkit.common.MlKitException: Failed to initialize detector. at com.google.mlkit.vision.vkp.PipelineManager.start(com.google.mlkit:vision-internal-vkp@@18.2.3:87) at com.google.mlkit.vision.objects.defaults.internal.zze.load(com.google.mlkit:object-detection@@17.0.2:16) at com.google.mlkit.common.sdkinternal.ModelResource.zza(com.google.mlkit:common@@18.11.0:4) at com.google.mlkit.common.sdkinternal.zzn.run(Unknown Source:10) at com.google.mlkit.common.sdkinternal.zzt.run(com.google.mlkit:common@@18.11.0:2) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zze(com.google.mlkit:common@@18.11.0:4) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzc(com.google.mlkit:common@@18.11.0:1) at com.google.mlkit.common.sdkinternal.zzi.run(Unknown Source:2) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzd(com.google.mlkit:common@@18.11.0:2) at com.google.mlkit.common.sdkinternal.zzk.run(Unknown Source:2) at java.lang.Thread.run(Thread.java:1012) Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed at android.content.res.AssetManager.nativeOpenAssetFd(Native Method) at android.content.res.AssetManager.openFd(AssetManager.java:1074) at com.google.mlkit.vision.vkp.PipelineManager.zzb(com.google.mlkit:vision-internal-vkp@@18.2.3:1) at com.google.mlkit.vision.vkp.PipelineManager.start(com.google.mlkit:vision-internal-vkp@@18.2.3:22) ... 12 more --- End of managed Xamarin.Google.MLKit.Common.MlKitException stack trace --- com.google.mlkit.common.MlKitException: Failed to initialize detector. at com.google.mlkit.vision.vkp.PipelineManager.start(com.google.mlkit:vision-internal-vkp@@18.2.3:87) at com.google.mlkit.vision.objects.defaults.internal.zze.load(com.google.mlkit:object-detection@@17.0.2:16) at com.google.mlkit.common.sdkinternal.ModelResource.zza(com.google.mlkit:common@@18.11.0:4) at com.google.mlkit.common.sdkinternal.zzn.run(Unknown Source:10) at com.google.mlkit.common.sdkinternal.zzt.run(com.google.mlkit:common@@18.11.0:2) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zze(com.google.mlkit:common@@18.11.0:4) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzc(com.google.mlkit:common@@18.11.0:1) at com.google.mlkit.common.sdkinternal.zzi.run(Unknown Source:2) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzd(com.google.mlkit:common@@18.11.0:2) at com.google.mlkit.common.sdkinternal.zzk.run(Unknown Source:2) at java.lang.Thread.run(Thread.java:1012) Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed at android.content.res.AssetManager.nativeOpenAssetFd(Native Method) at android.content.res.AssetManager.openFd(AssetManager.java:1074) at com.google.mlkit.vision.vkp.PipelineManager.zzb(com.google.mlkit:vision-internal-vkp@@18.2.3:1) at com.google.mlkit.vision.vkp.PipelineManager.start(com.google.mlkit:vision-internal-vkp@@18.2.3:22) ... 12 more }

Im also using MLKit to detect QR Codes and that works without throwing the exception. The settings are almost the same.

Here: google/filament#5696 it explains how to fix it but no idea how this translates to NET MAUI. Any ideas??

If needed I can create a small repo with something to test

Steps to Reproduce

  1. Create a MAUI project that uses MLKit
  2. Create an analyzer that uses ObjectDetector
  3. The exception will be thrown when doing the process

Link to public reproduction project repository

No response

Version with bug

9.0.110 SR12

Is this a regression from previous behavior?

Not sure, did not test other versions

Last version that worked well

No response

Affected platforms

Android

Affected platform versions

No response

Did you find any workaround?

No response

Relevant log output

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions