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

Android Studio加载ONNX模型报错:找不到onnxruntime4j_jni

解决Android Studio中加载ONNX模型的UnsatisfiedLinkError问题

错误原因

你用main方法直接在JVM桌面环境运行加载逻辑,但引入的onnxruntime-android和onnxruntime-mobile是专为Android系统编译的依赖,其JNI库只适配Android的CPU架构,和桌面JVM环境不兼容,所以找不到对应的onnxruntime4j_jni库。

解决方案

方案一:适配Android环境运行(推荐,符合你的项目场景)

  1. 迁移代码到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();
    }
    
  2. 放置模型文件:将sklearn_model.onnx放到项目的src/main/assets目录下(如果没有assets文件夹,右键main目录→New→Folder→Assets Folder创建)。
  3. 确认架构配置:在Module级的build.gradle中确保NDK架构包含ONNX支持的类型:
    android {
        defaultConfig {
            ndk {
                abiFilters 'arm64-v8a', 'armeabi-v7a'
            }
        }
    }
    
    Android版ONNX依赖会自动引入对应架构的JNI库,无需手动复制到libs文件夹。

方案二:改用桌面Java环境测试(仅用于本地验证,不能用于Android项目)

如果只是想在本地JVM测试模型加载,替换依赖为桌面版ONNX Runtime:

implementation ("com.microsoft.onnxruntime:onnxruntime:1.17.1")

此时你的main方法可以正常运行,但该依赖不能用于Android项目,两者依赖不通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:20:09