如何在libGDX中导入tensorflow lite并使用org.tensorflow.lite.Interpreter
你当前无法找到org.tensorflow.lite.Interpreter类的核心原因是依赖放置位置错误,以及模块属性不匹配:
你将TensorFlow Lite相关依赖全放在了:core模块下,而:core模块配置的是java-library纯Java库属性,Interpreter属于TensorFlow Lite的Android专属原生实现,纯Java环境下无法解析到该类,你现在能看到的.schema和.support分支属于纯Java实现的工具包,所以可以正常导入。
解决步骤
- 调整依赖位置
把:core模块dependencies块中所有tensorflow-lite相关的依赖全部剪切,粘贴到:android模块的dependencies块中,:core模块不要保留任何TFLite相关依赖。
修改后:core的dependencies只保留libGDX相关内容:
project(":core") { apply plugin: "java-library" dependencies { api "com.badlogicgames.gdx:gdx:$gdxVersion" api "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" } }
:android模块dependencies新增TFLite相关内容:
project(":android") { apply plugin: "com.android.application" configurations { natives } dependencies { implementation project(":core") // 原有libGDX依赖不变,新增以下内容 implementation 'org.tensorflow:tensorflow-lite:2.15.0' implementation 'org.tensorflow:tensorflow-lite-support:0.4.4' implementation 'org.tensorflow:tensorflow-lite-metadata:0.4.4' implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4' implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4' // 原有libGDX相关依赖保持不变 api "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" // ... 其余原有natives依赖全部保留 } }
注意:不要用+作为版本号,固定使用稳定版可以避免版本匹配异常
- 适配core模块调用逻辑(仅适用于Game.java放在core模块的场景)
如果你的Game.java放在core模块,不要直接在core层导入TFLite类,用接口隔离方式实现调用:
- 在core模块定义公共接口,比如:
public interface TFLiteHelper { void loadModel(String modelPath); // 补充其他你需要用到的TFLite相关方法 }
- 在android模块实现该接口,实现类中可以正常导入
org.tensorflow.lite.Interpreter编写具体逻辑 - 在
AndroidLauncher初始化Game类时,将实现类的实例作为参数传给Game,core层直接调用接口方法即可
- 清理缓存生效
修改完成后,清理Android Studio缓存并重启,重新同步Gradle即可正常导入Interpreter类。
内容的提问来源于stack exchange,提问作者TTT Tobi Triple Talk
相关产品推荐
相关产品推荐

