You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

构建TensorFlow Lite Demo源码时遇UnsatisfiedLinkError问题求助

解决TensorFlow Lite Demo中的java.lang.UnsatisfiedLinkError问题

这个错误本质是你的Android应用找不到TensorFlow Lite底层的原生(C/C++)库实现,通常和原生库打包不完整、ABI不匹配或者构建缓存有关。结合你用的Android Studio 3.0.3和Gradle 3.3环境,给你几个针对性的解决方案:

1. 确认TF Lite依赖配置正确

打开app模块下的build.gradle,检查dependencies块里是否正确引入了对应版本的TensorFlow Lite依赖。因为你用的是旧版构建工具,建议匹配demo对应的TF Lite版本,比如:

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:1.12.0'
}

注意版本号要和demo代码适配,避免依赖版本不兼容导致的库缺失。

2. 配置正确的ABI过滤规则

在app模块的build.gradledefaultConfig里添加NDK的ABI过滤,确保打包的原生库覆盖主流设备架构:

android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        }
    }
}

如果你的设备ABI不在过滤列表里,APK里就不会包含对应架构的.so库,自然会出现找不到实现的错误。

3. 清理构建缓存并重新构建

旧版Android Studio的构建缓存偶尔会出问题,按以下步骤操作:

  • 点击菜单栏的Build -> Clean Project
  • 接着执行Build -> Rebuild Project
  • 极端情况下可以手动删除项目根目录下的.gradle文件夹和app模块下的build文件夹,再重新同步项目

4. 检查手动放置的原生库(如果有)

如果demo里要求手动添加.so文件,确保它们放在正确的目录:src/main/jniLibs/[ABI]/(比如src/main/jniLibs/armeabi-v7a/libtensorflowlite.so),并且这些库的版本和你引入的TF Lite依赖版本完全一致。

5. 确认Gradle插件版本匹配

打开项目根目录的build.gradle,确保Android Gradle插件版本和你的Android Studio版本匹配(3.0.3对应插件3.0.3):

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.3'
    }
}

插件和Gradle版本不匹配会导致打包流程异常,原生库无法正确嵌入APK。

额外排查步骤

你可以用Android Studio的Build -> Analyze APK功能打开生成的APK,查看lib目录下是否包含对应ABI的TensorFlow Lite相关.so文件。如果某个ABI目录下没有对应的库,说明打包环节出了问题,回到上面的步骤排查。

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

火山引擎 最新活动