Android MLKit OCR在Galaxy Tab Active3设备无法运行问题求助
解决MLKit OCR在Galaxy Tab Active3 SM-T577上的模块下载等待异常
问题详情
Firebase Crashlytics捕获到非致命异常:
Non-fatal Exception: com.google.mlkit.common.MlKitException: Waiting for the text optional module to be downloaded. Please wait. at com.google.mlkit.vision.text.internal.zzb.zzb(com.google.android.gms:play-services-mlkit-text-recognition-common@@17.0.0:16) at com.google.mlkit.vision.text.internal.TextRecognizerTaskWithResource.load(com.google.android.gms:play-services-mlkit-text-recognition-common@@17.0.0:1) at com.google.mlkit.common.sdkinternal.ModelResource.zza(com.google.mlkit:common@@18.4.0:4) at com.google.mlkit.common.sdkinternal.zzn.run(:10) at com.google.mlkit.common.sdkinternal.zzp.run(com.google.mlkit:common@@18.4.0:2) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zze(com.google.mlkit:common@@18.4.0:4) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzc(com.google.mlkit:common@@18.4.0:1) at com.google.mlkit.common.sdkinternal.zzk.run(:2) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzd(com.google.mlkit:common@@18.4.0:2) at com.google.mlkit.common.sdkinternal.zzi.run(:2) at java.lang.Thread.run(Thread.java:923)
当前项目配置:
Gradle依赖
implementation 'com.google.android.gms:play-services-mlkit-text-recognition:18.0.0' implementation 'com.google.android.gms:play-services-mlkit-text-recognition:18.0.0' implementation 'com.google.mlkit:language-id:17.0.4'
Manifest配置
<meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="ocr" />
已尝试操作:卸载重装应用、清除Google Play Store数据,问题仍存在。
解决方案
1. 清理重复的Gradle依赖
Gradle中重复声明了play-services-mlkit-text-recognition,保留一行即可避免依赖冲突:
implementation 'com.google.android.gms:play-services-mlkit-text-recognition:18.0.0' implementation 'com.google.mlkit:language-id:17.0.4'
2. 手动监听模型下载状态
Manifest的自动下载机制可能在部分设备上失效,建议主动触发下载并监听状态,确保模型下载完成后再调用OCR:
import com.google.mlkit.common.model.DownloadConditions import com.google.mlkit.common.model.RemoteModelManager import com.google.mlkit.vision.text.TextRecognition import com.google.mlkit.vision.text.TextRecognizerOptions // 获取远程模型管理器 val remoteModelManager = RemoteModelManager.getInstance() // 定义OCR模型 val textModel = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS).remoteModel // 设置下载条件(可根据需求调整网络要求) val conditions = DownloadConditions.Builder() .requireWifi() // 若允许移动网络下载则注释此行 .build() // 启动下载并监听结果 remoteModelManager.download(textModel, conditions) .addOnSuccessListener { // 模型下载完成,初始化OCR并执行识别逻辑 val recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS) // 此处添加识别代码 } .addOnFailureListener { exception -> // 下载失败,提示用户检查网络或重试 }
3. 改用捆绑版OCR模型
如果设备始终无法下载远程模型,可切换为捆绑版模型(将模型打包在APK中,无需下载):
替换Gradle依赖为:
implementation 'com.google.android.gms:play-services-mlkit-text-recognition-latin:18.0.0' implementation 'com.google.mlkit:language-id:17.0.4'
注意:捆绑版会增加APK体积,需根据业务场景权衡取舍。
4. 检查Google Play服务版本
确保设备上的Google Play服务已更新至最新版本,旧版本可能导致模型下载通道异常。
5. 验证网络访问权限
确认设备已授予应用网络权限,且网络环境可正常访问Google服务(部分地区或网络可能存在访问限制)。
内容的提问来源于stack exchange,提问作者Mustafa Maden
相关产品推荐
相关产品推荐

