Flutter集成tflite_flutter_helper包时Android编译错误求助
Flutter集成TensorFlow Lite包编译报错解决方案
问题现象
在全新Flutter项目中集成tflite_flutter和tflite_flutter_helper包后,编译时出现核心错误:
e: /Users/sangyoonhan/flutter/.pub-cache/hosted/pub.dartlang.org/tflite_flutter_helper-0.3.1/android/src/main/kotlin/com/tfliteflutter/tflite_flutter_helper/TfliteFlutterHelperPlugin.kt: (43, 1): Class 'TfliteFlutterHelperPlugin' is not abstract and does not implement abstract member public abstract fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean defined in io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener e: /Users/sangyoonhan/flutter/.pub-cache/hosted/pub.dartlang.org/tflite_flutter_helper-0.3.1/android/src/main/kotlin/com/tfliteflutter/tflite_flutter_helper/TfliteFlutterHelperPlugin.kt: (143, 2): 'onRequestPermissionsResult' overrides nothing
原因分析
你用的tflite_flutter_helper: ^0.3.1版本太旧,和当前Flutter 3.3.8的Android插件API不兼容。新版本Flutter修改了PluginRegistry.RequestPermissionsResultListener接口里onRequestPermissionsResult方法的参数签名,旧插件的方法签名匹配不上,导致编译失败。
解决方案
1. 升级依赖包到兼容版本
直接更新pubspec.yaml里的tflite_flutter和tflite_flutter_helper到最新稳定版,示例如下:
dependencies: flutter: sdk: flutter camera: ^0.9.4+5 image: ^3.1.0 tflite_flutter: ^0.10.1 tflite_flutter_helper: ^0.4.0 path_provider: ^2.0.8
执行flutter pub get后重新编译项目,这是最推荐的解决方式。
2. 手动修改旧插件代码(临时方案)
如果暂时不想升级,可以直接修改缓存里的插件代码:
- 找到报错文件:
/Users/sangyoonhan/flutter/.pub-cache/hosted/pub.dartlang.org/tflite_flutter_helper-0.3.1/android/src/main/kotlin/com/tfliteflutter/tflite_flutter_helper/TfliteFlutterHelperPlugin.kt - 找到
onRequestPermissionsResult方法,把参数permissions的类型从Array<String>改成Array<out String>,修改后方法签名如下:
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray): Boolean { // 保留原有方法内容 return cameraPlugin?.onRequestPermissionsResult(requestCode, permissions, grantResults) ?: false }
- 保存文件后重新编译项目。
3. 清理缓存后重新构建
如果上面的方法无效,执行以下命令清理缓存再尝试:
flutter clean flutter pub get flutter run
内容的提问来源于stack exchange,提问作者Flutter Boi
相关产品推荐
相关产品推荐

