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

Flutter导出tflite_flutter至iOS原生项目遇符号查找失败求助

解决Flutter导出Framework集成iOS原生时tflite_flutter符号查找失败问题

问题场景

环境:Flutter 3.7.0、Xcode 14;依赖:tflite_flutter 0.10.4
将Flutter模块导出为Framework集成到iOS原生项目后,运行时报错:

Unhandled Exception: Invalid argument(s): Failed to lookup symbol
'TfLiteInterpreterOptionsCreate': dlsym(RTLD_DEFAULT, TfLiteInterpreterOptionsCreate): symbol not found
#0 DynamicLibrary.lookup (dart:ffi-patch/ffi_dynamic_library_patch.dart:33)
#1 TensorFlowLiteBindings._TfLiteInterpreterOptionsCreatePtr (package:tflite_flutter/src/bindings/tensorflow_lite_bindings_generated.dart:336)
#2 TensorFlowLiteBindings._TfLiteInterpreterOptionsCreate (package:tflite_flutter/src/bindings/tensorflow_lite_bindings_generated.dart)
#3 TensorFlowLiteBindings.TfLiteInterpreterOptionsCreate (package:tflite_flutter/src/bindings/tensorflow_lite_bindings_generated.dart)
#4 new InterpreterOptions (package:tflite_flutter/src/interpreter_options.dart:36)
#5 Detector._loadModel (package:tf_module/service/detector_service.dart:109)
#6 Detector.start (package:tf_module/service/detector_service.dart:99)
<asynchronous suspension>

已尝试修改Xcode中Target Runner>Build Settings>Strip Style为Non-Global Symbols,未生效。

解决方案

  • 确认TensorFlow Lite库的嵌入状态
    导出Flutter Framework后,检查原生iOS项目的Frameworks, Libraries, and Embedded Content中是否包含libtensorflowlite_c.framework。如果没有,从Flutter项目的ios/Pods/tflite_flutter路径下找到该框架,添加到原生项目中,并设置Embed选项为Embed & Sign。

  • 调整原生主Target的符号剥离配置
    不要只修改Runner Target,需要针对原生项目的主Target修改以下Build Settings:

    • 将Strip Debug Symbols During Copy设置为NO
    • 将Strip Style设置为Non-Global Symbols
    • 将Dead Code Stripping设置为NO
  • 更新tflite_flutter依赖版本
    tflite_flutter 0.10.4与Flutter 3.7.0、Xcode 14的兼容性存在问题,执行flutter pub upgrade tflite_flutter升级到最新稳定版(如0.14.0+),之后重新导出Flutter Framework并集成。

  • 手动指定动态库加载路径
    在Flutter代码初始化Interpreter时,手动指定TensorFlow Lite库的路径,避免动态库查找失败:

    import 'dart:ffi';
    import 'dart:io';
    import 'package:path/path.dart' as path;
    import 'package:tflite_flutter/tflite_flutter.dart';
    
    Future<void> loadModel() async {
      final libraryPath = path.join(
        Directory.current.path,
        'Frameworks',
        'libtensorflowlite_c.framework',
        'libtensorflowlite_c',
      );
      final dylib = DynamicLibrary.open(libraryPath);
      final interpreter = await Interpreter.fromAsset(
        'your_model.tflite',
        dylib: dylib,
        options: InterpreterOptions()..useGpuDelegate = false,
      );
      // 后续模型操作
    }
    

内容的提问来源于stack exchange,提问作者Ray Gu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:10:09