【问题标题】:Flutter_tts doesn't run on iOSFlutter_tts 无法在 iOS 上运行
【发布时间】:2024-06-03 17:00:02
【问题描述】:

我正在尝试使用 Flutter_tts 库编写一个在颤振上朗读文本的应用程序,它适用于 android,但是当我尝试在 iOS 设备上运行它时出现错误:

 === BUILD TARGET Runner OF PROJECT Runner WITH CONFIGURATION Debug ===
    ld:警告:找不到自动链接库“swiftDispatch”
    ld:警告:找不到自动链接库“swiftCoreMedia”
    ld:警告:找不到自动链接库“swiftAVFoundation”
    ld:警告:找不到自动链接库“swiftFoundation”
    ld:警告:找不到自动链接库“swiftsimd”
    ld:警告:找不到自动链接库“swiftObjectiveC”
    ld:警告:找不到自动链接库“swiftCoreFoundation”
...
我之前将我的构建系统切换到旧版构建系统并将我的“Swift 语言版本”指定为“Swift 4.2”

当我将构建系统切换到“新构建系统”时,它给了我

Xcode 的输出:
↳
    错误:多个命令产生'/Users/dimazhylko/FlutterProjects/flutter_tts_plugin_test/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework':
    1) 目标 'Runner' 具有从 '/Users/dimazhylko/FlutterProjects/flutter_tts_plugin_test/ios/Flutter/Flutter.framework' 到 '/Users/dimazhylko/FlutterProjects/flutter_tts_plugin_test/build/ios/Debug-iphonesimulator/Runner.app 的复制命令/Frameworks/Flutter.framework'
    2) 该命令取决于 Target 'Runner' 中的命令:脚本阶段“[CP] Embed Pods Frameworks”
    警告:未运行 swift-stdlib-tool:ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 已启用,但产品类型“com.apple.product-type.library.static”不是包装器类型。 (在目标“Pods-Runner”中)
    警告:忽略重复的输出文件:'/Users/dimazhylko/FlutterProjects/flutter_tts_plugin_test/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'(在目标'Runner'中)
    注:使用新的构建系统注:规划构建注:构建构建描述

降级 Swift 版本也无济于事。

我还能尝试什么来解决这个问题? 或者你可以推荐另一个库?(我已经尝试过Tts,它看起来不是一个好的选择,因为它只适用于flutter v“0.5.0”(Dart 版本2.0.0

I also get this warning when I open Xcode

【问题讨论】:

标签: ios swift xcode flutter text-to-speech


【解决方案1】:

在创建没有 -i swift 标志的颤振项目时,这是一个已知问题。我在这里概述了它similar issue

flutter create -i swift my_app

作为一种可怕的解决方法,您可以使用 -i swift 标志创建一个新的 Flutter 项目,然后从当前项目中复制您的文件。

【讨论】:

  • 结合这两个建议,我构建了它,但现在我有“等待应用程序启动超时”
【解决方案2】:

右击Runner,添加一个新的Swift文件。 XCode 会询问您是否要添加桥接头。接受并重新编译。

【讨论】:

    【解决方案3】:

    这是一个已知问题https://github.com/flutter/flutter/issues/20685

    https://github.com/flutter/flutter/issues/20685#issuecomment-421511890

    有两种解决方法:

    • 选项 1:使用旧版构建系统。 如 @gi097 所述,打开 ios/Runner.xcworkspace,并将构建系统更改为 Legacy Build System
    • 选项 2:使用新的 Xcode 10 构建系统。
      1. 打开ios/Runner.xcworkspace
      2. 在项目导航器侧边栏中选择Runner 项目。
      3. 在主视图中,选择Runner 目标,然后选择Build Phases 选项卡。
      4. 展开Embed Frameworks 阶段并从嵌入式框架列表中选择Flutter.framework
      5. 单击-Flutter.framework 从列表中删除(请务必保留 App.framework)。

    并且应该已经在dev 和/或master 频道中修复。

    【讨论】:

    • 我都试过了,但没有帮助。在最后一次尝试中,我得到:“clang: error: linker command failed with exit code 1 (use -v to see invocation) note: Using new build systemnote: Planning buildnote: Constructing build description”
    • 抱歉,没有其他想法。
    最近更新 更多