调用TFLite Interpreter.run时报错libtensorflowlite_c.so未找到如何解决?
libtensorflowlite_c.so 缺失问题解决方案
错误原因
该错误是由于项目未正确引入TensorFlow Lite底层依赖的原生动态库,libtensorflowlite_c.so 是TFLite解释器运行必需的核心原生组件,缺失会导致初始化和运行逻辑直接失败。
对应解决方案
场景1:Flutter项目使用tflite系列插件(你当前的代码属于该场景)
- 优先确认你使用的是官方维护的
tflite_flutter插件,而非已经停止维护的旧版tflite插件,旧版插件未适配新架构,普遍存在so库缺失问题 - 安卓端做如下配置调整:
- 打开
android/app/build.gradle文件,在defaultConfig块中添加ndk架构过滤配置,根据你的兼容需求保留对应架构:
android { defaultConfig { ndk { // 可根据实际需求删减,仅保留需要的架构可大幅减少包体积 abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } } }- 若你开启了代码混淆,在
android/app/proguard-rules.pro中添加TFLite防混淆规则:
-keep class org.tensorflow.lite.** { *; } -keepnames class org.tensorflow.lite.** { *; }- 若自动拉取依赖失败,可手动在
android/app/build.gradle的dependencies块中添加TFLite原生依赖:
dependencies { implementation 'org.tensorflow:tensorflow-lite:2.15.0' // 需要GPU加速可额外添加下面的依赖 // implementation 'org.tensorflow:tensorflow-lite-gpu:2.15.0' } - 打开
- 清理构建缓存后重试:依次执行
flutter clean、flutter pub get,之后重新运行项目即可。
场景2:原生安卓项目开发
- 直接在module级的build.gradle中引入上述TFLite gradle依赖,gradle会自动拉取对应架构的so库打包到APK中
- 若你是自行编译TFLite源码的场景,需要把编译生成的
libtensorflowlite_c.so文件放到项目对应架构的jniLibs目录下:- src/main/jniLibs/armeabi-v7a/libtensorflowlite_c.so
- src/main/jniLibs/arm64-v8a/libtensorflowlite_c.so
- 其他架构以此类推放入对应目录
内容的提问来源于stack exchange,提问作者gauhun
相关产品推荐
相关产品推荐

