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

使用Gradle构建TensorFlow Android目标检测API时libtensorflow_demo.so找不到

解决TensorFlow Android目标检测Gradle构建找不到Native库的问题

我之前也碰到过完全一样的问题!用Bazel跑TensorFlow Android目标检测Demo顺得不行,但手动把so移到JniLibs用Gradle构建就报错,连ObjectTracker: Native object tracking support not found的提示都一模一样。后来折腾了好一阵才解决,给你分享几个关键排查点和解决方法:

  • 确保JniLibs的架构与文件完整性
    Bazel编译出来的so是分不同ABI架构的(比如armeabi-v7a、arm64-v8a、x86等),手动复制的时候千万别只拿某一个架构的文件。要把Bazel输出目录下所有ABI对应的文件夹完整复制到app/src/main/jniLibs路径下,而且每个文件夹里的so文件要全——除了libtensorflow_demo.so,还要确认有没有libtensorflow_inference.so这类依赖库,少了任何一个都会导致加载失败。

  • 检查Gradle的ABI过滤配置
    打开app模块的build.gradle,看看defaultConfig里的ndk.abiFilters配置,要确保这里列出的架构和你复制的so文件的架构完全匹配。比如你只复制了armeabi-v7a的so,就别把arm64-v8a加到过滤列表里,不然APP在arm64设备上会找不到对应架构的库。示例配置如下:

    android {
        defaultConfig {
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a' // 与你复制的so架构保持一致
            }
        }
    }
    
  • 验证so文件的有效性
    手动复制的so可能因为权限问题或者复制过程损坏,你可以对比Bazel构建输出的so和JniLibs里的so的大小、MD5值,确保是完全相同的文件。另外要确认你复制的是针对Android平台编译的so,不是其他平台的版本。

  • 核对Native库加载逻辑
    检查项目里加载Native库的代码,比如在Application或Activity的onCreate方法里,有没有正确调用System.loadLibrary("tensorflow_demo")?注意库名要去掉so文件名前面的lib和后面的.so。如果有依赖的其他so,要先加载依赖库,再加载主库——比如libtensorflow_demo.so依赖libtensorflow_inference.so的话,就要先调用System.loadLibrary("tensorflow_inference"),再加载demo库。

  • 清理重建项目
    有时候Android Studio的缓存会搞事情,试试执行Build -> Clean Project,然后Build -> Rebuild Project,再重新运行APP,很多时候缓存导致的问题这样就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:12:50