Android Studio加载ONNX模型报错:找不到onnxruntime4j_jni
解决Android Studio中加载ONNX模型的UnsatisfiedLinkError问题
错误原因
你用main方法直接在JVM桌面环境运行加载逻辑,但引入的onnxruntime-android和onnxruntime-mobile是专为Android系统编译的依赖,其JNI库只适配Android的CPU架构,和桌面JVM环境不兼容,所以找不到对应的onnxruntime4j_jni库。
解决方案
方案一:适配Android环境运行(推荐,符合你的项目场景)
- 迁移代码到Android组件:把模型加载逻辑放到Android的Activity、Fragment或后台线程中,不要用
main方法。示例代码:// 在Activity中的示例 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 模型加载耗时,必须放在子线程 new Thread(() -> { try (OrtEnvironment env = OrtEnvironment.getEnvironment(); OrtSession session = env.createSession(getAssets(), "sklearn_model.onnx")) { Log.d("ONNX_TAG", "模型加载成功!"); } catch (OrtException e) { e.printStackTrace(); } }).start(); } - 放置模型文件:将
sklearn_model.onnx放到项目的src/main/assets目录下(如果没有assets文件夹,右键main目录→New→Folder→Assets Folder创建)。 - 确认架构配置:在Module级的
build.gradle中确保NDK架构包含ONNX支持的类型:
Android版ONNX依赖会自动引入对应架构的JNI库,无需手动复制到libs文件夹。android { defaultConfig { ndk { abiFilters 'arm64-v8a', 'armeabi-v7a' } } }
方案二:改用桌面Java环境测试(仅用于本地验证,不能用于Android项目)
如果只是想在本地JVM测试模型加载,替换依赖为桌面版ONNX Runtime:
implementation ("com.microsoft.onnxruntime:onnxruntime:1.17.1")
此时你的main方法可以正常运行,但该依赖不能用于Android项目,两者依赖不通用。
内容的提问来源于stack exchange,提问作者user24034379
相关产品推荐
相关产品推荐

