You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成Google ML Kit相关库后扫码功能触发MLKMissingLocalizerModel异常崩溃求助

集成Google ML Kit相关库后扫码功能触发MLKMissingLocalizerModel异常崩溃求助

我在项目里集成了Google ML Kit的以下库:

pod 'GoogleMLKit/BarcodeScanning', '7.0.0'
pod 'GoogleMLKit/ObjectDetection', '7.0.0'

但在运行扫码功能的时候,App突然崩溃了,抛出的错误信息如下:

Terminating app due to uncaught exception 'MLKMissingLocalizerModel', reason: 'Object localizer model is missing.'
First throw call stack:
(0x19cca95ec 0x19a225244 0x19cdf66e0 0x105157c64 0x19a1ff4ec 0x19a20672c 0x19a206514 0x19a2063c...)


嗨,这个问题我之前也踩过坑!其实根源很明确:你虽然只是在调用扫码功能,但因为同时集成了ObjectDetection库,ML Kit会默认尝试加载物体检测的本地模型——而这个模型是需要提前下载到设备上的,你没处理模型下载的逻辑,自然就触发崩溃了。

给你两个针对性的解决思路:

  • 如果完全不需要物体检测功能:直接把pod 'GoogleMLKit/ObjectDetection', '7.0.0'从Podfile里删掉,执行pod install重新安装依赖就行。这样就彻底切断了物体检测模型的关联,扫码功能就能正常运行了。

  • 确实需要保留物体检测功能:那你得在App启动或者使用相关功能前,先处理模型的下载逻辑。可以用ML Kit的模型管理器检查模型是否存在,不存在就触发下载,等下载完成后再使用功能。给你个简单的代码示例:

let modelManager = MLKModelManager.modelManager()
let objectDetectionModel = MLKObjectDetectorOptions.default().model
if !modelManager.isModelDownloaded(objectDetectionModel) {
    modelManager.download(objectDetectionModel) { error in
        if let error = error {
            // 处理下载失败的情况
            print("模型下载失败:\(error.localizedDescription)")
        } else {
            // 模型下载完成,此时可以正常使用物体检测和扫码功能
            print("模型下载成功")
        }
    }
}

另外还得检查下你的扫码逻辑里,有没有不小心初始化了ObjectDetector相关的实例——如果误调用了物体检测的代码,也会触发这个错误,要是有的话删掉就行。

备注:内容来源于stack exchange,提问作者Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:33:06