Android 无法从ML工具包加载自定义模型:FireBaseMleException:加载任务失败

Android 无法从ML工具包加载自定义模型:FireBaseMleException:加载任务失败,android,firebase-mlkit,Android,Firebase Mlkit,我遵循Codelab:它按原样工作,但一旦我删除提供的本地模型以强制使用云模型,我就会得到一个模糊的错误 我对代码实验室的不同之处在于: // manager.registerLocalModelSource(localModelSource) manager.registerCloudModelSource(cloudSource) return FirebaseModelOptions.Builder() .setCloudModelN

我遵循Codelab:它按原样工作,但一旦我删除提供的本地模型以强制使用云模型,我就会得到一个模糊的错误

我对代码实验室的不同之处在于:

//        manager.registerLocalModelSource(localModelSource)
    manager.registerCloudModelSource(cloudSource)

    return FirebaseModelOptions.Builder()
            .setCloudModelName(HOSTED_MODEL_NAME)
//                .setLocalModelName("asset")
            .build()
注释掉“本地”模型配置,因此我强制项目使用托管的ML工具包模型

但是,我在运行模型时遇到以下错误:

E/MainActivity: com.google.firebase.ml.common.FirebaseMLException: The load task failed
    com.google.android.gms.tasks.RuntimeExecutionException: com.google.firebase.ml.common.FirebaseMLException: The load task failed
        at com.google.android.gms.tasks.zzu.getResult(Unknown Source:17)
        at work.beltran.mlkitcustommodelcodelab.MainActivity$onCreate$$inlined$use$lambda$1.then(MainActivity.kt:61)
        at com.google.android.gms.tasks.zzd.run(Unknown Source:26)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:172)
        at android.app.ActivityThread.main(ActivityThread.java:6590)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: com.google.firebase.ml.common.FirebaseMLException: The load task failed
        at com.google.android.gms.internal.firebase_ml.zzgy.zzf(Unknown Source:75)
        at com.google.android.gms.internal.firebase_ml.zzgu.call(Unknown Source:8)
        at com.google.android.gms.internal.firebase_ml.zzgp.zza(Unknown Source:0)
        at com.google.android.gms.internal.firebase_ml.zzgq.run(Unknown Source:4)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:172)
        at android.os.HandlerThread.run(HandlerThread.java:65)
     Caused by: com.google.firebase.ml.common.FirebaseMLException: Cannot load custom model
        at com.google.android.gms.internal.firebase_ml.zzhn.zzey(Unknown Source:148)
        at com.google.android.gms.internal.firebase_ml.zzha.zzfb(Unknown Source:75)
        at com.google.android.gms.internal.firebase_ml.zzha.call(Unknown Source:0)
        at com.google.android.gms.internal.firebase_ml.zzgp.zza(Unknown Source:0) 
        at com.google.android.gms.internal.firebase_ml.zzgq.run(Unknown Source:4) 
        at android.os.Handler.handleCallback(Handler.java:790) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:172) 
        at android.os.HandlerThread.run(HandlerThread.java:65) 
我的项目可以在这里找到:

我试过一些东西:

  • 我的项目具有internet权限,Firebase Analytics可以工作,因为我可以在DebugView上查看事件
  • 本地模型与ML工具包中的托管模型相同
  • 型号名称是正确的
在根仿真器上运行,导航到app data文件夹,我可以找到我的models文件夹,名称如下:

/data/data/work.beltran.mlkitcustomodelcodelab/no_backup/com.google.firebase.ml.custom.models/W0RFRkFVTFRd+MTo2ODI2MzU4OTg3OTY6YW5kcm9pZDozMGYwZDA3MmQ5NDBjODEx/mobilenet

但是,文件夹是空的


我唯一的猜测是:Firebase出于某种原因决定不下载该模型,我不知道为什么。

我必须添加SHA证书指纹才能正常工作

如果缺少该步骤,将不会下载ML模型

按照此处的说明为您的证书生成SHA:


并介绍设备项目设置上的输出。

有关于此问题的更新吗?有更新吗?这里也有同样的问题。问题的答案如下(不过人们都投了反对票)。您需要将SHA指纹添加到项目配置中,以允许应用程序从Firebase下载模型。