Android armeabi-v7a构建下ML Kit文字识别崩溃问题求助
ML Kit文字识别armeabi-v7a架构崩溃问题解决
问题描述
我在原生Android代码中使用ML Kit文字识别最新版本,依赖配置为:
implementation 'com.google.android.gms:play-services-mlkit-text-recognition:18.0.2'
该功能在arm64-v8a架构下运行正常,但在armeabi-v7a架构下崩溃,堆栈信息如下:
java.lang.UnsatisfiedLinkError: dalvik.system.DelegateLastClassLoader[DexPathList[[zip file "/data/user_de/0/com.google.android.gms/app_chimera/m/00000476/dl-MlkitOcrCommon.optional_231115100400.apk"],nativeLibraryDirectories=[/data/user_de/0/com.google.android.gms/app_chimera/m/00000476/dl-MlkitOcrCommon.optional_231115100400.apk!/lib/armeabi-v7a, /data/user_de/0/com.google.android.gms/app_chimera/m/00000476/dl-MlkitOcrCommon.optional_231115100400.apk!/lib/armeabi, /system/lib, /system/product/lib]]] couldn't find "libmlkit_google_ocr_pipeline_gms.so" at java.lang.Runtime.loadLibrary0(Runtime.java:1067) at java.lang.Runtime.loadLibrary0(Runtime.java:1007) at java.lang.System.loadLibrary(System.java:1667) at so.c(:com.google.android.gms.optional_mlkit_ocr_common@231115065@23.11.15 (100400-0):3) at so.f(:com.google.android.gms.optional_mlkit_ocr_common@231115065@23.11.15 (100400-0):1) at so.e(:com.google.android.gms.optional_mlkit_ocr_common@231115065@23.11.15 (100400-0):0) at azb.a(:com.google.android.gms.optional_mlkit_ocr_common@231115065@23.11.15 (100400-0):5) at bp.onTransact(:com.google.android.gms.optional_mlkit_ocr_common@231115065@23.11.15 (100400-0):4) at android.os.Binder.transact(Binder.java:914) at bo.b(:com.google.android.gms.policy_vision_ocr_dynamite@231000401@231000400057.513075010.513075010:2) at aqs.f(:com.google.android.gms.policy_vision_ocr_dynamite@231000401@231000400057.513075010.513075010:0) at lr.b(:com.google.android.gms.policy_vision_ocr_dynamite@231000401@231000400057.513075010.513075010:1) at lr.a(:com.google.android.gms.policy_vision_ocr_dynamite@231000401@231000400057.513075010.513075010:8) at bp.onTransact(:com.google.android.gms.policy_vision_ocr_dynamite@231000401@231000400057.513075010.513075010:4) at android.os.Binder.transact(Binder.java:914) at com.google.android.gms.internal.vision.zzb.zza(com.google.android.gms:play-services-vision-common@@19.1.0:10) at com.google.android.gms.internal.vision.zzac.zza(com.google.android.gms:play-services-vision@@20.1.0:7) at com.google.android.gms.internal.vision.zzan.zza(com.google.android.gms:play-services-vision@@20.1.0:8) at com.google.android.gms.vision.text.TextRecognizer.detect(com.google.android.gms:play-services-vision@@20.1.0:41) at com.google.mlkit.vision.text.internal.zzb.zza(com.google.android.gms:play-services-mlkit-text-recognition@@16.0.0:33) at com.google.mlkit.vision.text.internal.zzb.run(com.google.android.gms:play-services-mlkit-text-recognition@@16.0.0:51) at com.google.mlkit.vision.common.internal.MobileVisionBase.zza(com.google.mlkit:vision-common@@16.0.0:23) at com.google.mlkit.vision.common.internal.zzb.call(Unknown Source:4) at com.google.mlkit.common.sdkinternal.ModelResource.zza(com.google.mlkit:common@@16.0.0:26) at com.google.mlkit.common.sdkinternal.zzn.call(Unknown Source:6) at com.google.mlkit.common.sdkinternal.zzm.run(com.google.mlkit:common@@16.0.0:5) at com.google.mlkit.common.sdkinternal.zzq.run(com.google.mlkit:common@@16.0.0:3) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at com.google.android.gms.internal.mlkit_common.zzb.dispatchMessage(com.google.mlkit:common@@16.0.0:6) at android.os.Looper.loop(Looper.java:224) at android.os.HandlerThread.run(HandlerThread.java:67)
已尝试降级ML Kit版本,但问题未解决。
解决方法
检查ABI过滤配置
在Module级别的build.gradle中明确指定支持的ABI,避免错误过滤导致库缺失:android { defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } }主动触发模型下载
ML Kit依赖动态下载的Native库,可在应用启动时主动触发下载,确保库文件完整:TextRecognition.getClient() .downloadModelIfNeeded() .addOnSuccessListener(unused -> { // 模型下载完成后执行识别操作 }) .addOnFailureListener(e -> { // 处理下载失败逻辑 });切换到静态依赖版本
改用静态链接的ML Kit库,避免动态模块下载的ABI匹配问题,依赖配置改为:implementation 'com.google.android.gms:play-services-mlkit-text-recognition-static:18.0.2'注意:静态库会增加APK体积,但能避免动态下载带来的兼容性问题。
清理Google Play服务缓存
设备上Google Play服务的缓存异常可能导致库文件下载失败,可指导用户进入设备设置,找到Google Play服务,清除缓存和存储后重启设备重试。更新Google Play服务版本
崩溃日志显示的Google Play服务版本较旧,可能存在ABI兼容问题,确保设备上的Google Play服务已更新至最新版本。
内容的提问来源于stack exchange,提问作者nitin chaudhary
相关产品推荐
相关产品推荐

