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

Android Kotlin集成TensorFlow Lite时无法加载detect.tflite文件的问题求助

解决ML Kit自定义目标检测中.tflite模型文件找不到的问题

别着急,你的问题根源在于加载assets目录下模型的方法用错了,咱们一步步来解决:

1. 修正模型加载代码

你当前用的setAbsoluteFilePath("detect.tflite")是用来指定设备本地文件系统的绝对路径,但你的模型是打包在APK的assets目录里的,应该改用setAssetFilePath方法:

val localModel = LocalModel.Builder()
    .setAssetFilePath("detect.tflite") // 替换原来的setAbsoluteFilePath
    .build()

2. 为什么之前的方法无效?

setAbsoluteFilePath要求传入的是类似/storage/emulated/0/your_folder/detect.tflite这种设备存储中的完整路径,而assets目录下的文件是嵌入在APK内部的,不属于设备的外部存储,所以ML Kit会抛出FileNotFoundException找不到文件。

而setAssetFilePath是ML Kit专门提供的、用于加载APK中assets目录模型的方法,它会自动处理assets文件的读取逻辑,不需要你手动处理文件路径。

3. 额外的验证步骤

为了确保万无一失,你可以再检查以下几点:

  • 确认detect.tflite文件确实放在src/main/assets目录下,文件名完全一致(Android系统是区分大小写的,注意不要写成Detect.tflite或者detect.TFLITE)
  • 检查Module级别的build.gradle文件,确保assets目录被正确配置(默认情况下Android Studio会自动识别,但若有自定义配置需确认):
    android {
        sourceSets {
            main {
                assets.srcDirs = ['src/main/assets']
            }
        }
    }
    
  • 可以尝试清理项目缓存并重新构建:点击Android Studio菜单栏的Build → Clean Project,然后Rebuild Project

4. 清理不必要的配置

你之前添加的外部存储权限和requestLegacyExternalStorage配置其实是不需要的,因为模型是从APK内部的assets加载,不需要访问设备外部存储,建议把这些配置从AndroidManifest.xml中移除,避免后续混淆:

<!-- 可以删除以下权限和配置 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application android:requestLegacyExternalStorage="true">

修改完这些之后,重新运行项目,应该就能正常加载模型了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:23:10