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

Xamarin Android求助:无法找到libhprt_printer_model.so文件

解决dalvik.system.PathClassLoader找不到libhprt_printer_model.so的问题

兄弟,我看你踩进这个找不到SO库的坑里了,之前我帮不少开发者解决过类似问题,给你几个针对性的排查方向,应该能搞定:

  • 先确认SO文件的架构和设备匹配
    从错误日志能看出来,你的应用跑在arm64-v8a架构的设备/模拟器上,但系统在/data/app/.../lib/arm64目录里找不到libhprt_printer_model.so。你先去项目的src/main/jniLibs目录看看,是不是有arm64-v8a文件夹,而且里面确实放了对应的SO文件?
    如果没有arm64版本的SO,要么找厂商要对应架构的库,要么在app的build.gradle里指定只支持你有的架构,比如只兼容armeabi-v7a:

    android {
        defaultConfig {
            ndk {
                abiFilters 'armeabi-v7a'
            }
        }
    }
    

    这样系统就不会去arm64目录找库了,arm64设备也能兼容加载armeabi-v7a的版本。

  • 检查SO文件的放置路径是否正确
    要是你手动添加的SO,必须放在src/main/jniLibs/[对应架构]/下面,比如armeabi-v7a的SO就放src/main/jniLibs/armeabi-v7a/libhprt_printer_model.so。
    如果你是通过jar包引入的,得注意有些jar包里的SO目录结构可能不对——比如有的jar把SO放在lib/[架构]/下,这时候你需要在build.gradle里配置让Android Studio识别这个路径:

    android {
        sourceSets {
            main {
                jniLibs.srcDirs = ['libs'] // 假设jar解压后SO在libs目录下
            }
        }
    }
    
  • jar包引入建议手动提取SO文件
    直接嵌入jar包有时候会出问题,因为Android Studio不一定能自动把jar里的SO解压到正确目录。你可以把jar包解压,把里面的SO文件单独提出来放到jniLibs对应的架构文件夹里,再把jar作为依赖引入,这样更稳妥。

  • 清理缓存后重新构建项目
    有时候IDE的缓存会搞事情,先点一下Build > Clean Project,再执行Build > Rebuild Project,重新运行应用说不定就解决了。

  • 检查模拟器的ABI设置
    如果你用的是模拟器,看看是不是不小心选了arm64架构,但项目里只有其他架构的SO。可以改成armeabi-v7a的模拟器试试,或者按照第一点的方法配置abiFilters。

内容的提问来源于stack exchange,提问作者user7485282

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:26:58