Xcode 迁移

你需要一台安装了 Xcode 的 Mac 来开发 iOS 的 Flutter 应用。 Xcode 11.4 变更了很多库的链接和集成方式,你可能会在 iOS 真机和模拟器之间切换时遇到以下两个错误

Building for iOS, but the linked and embedded framework 'App.framework' was built for iOS Simulator.

或者

Building for iOS Simulator, but the linked and embedded framework 'App.framework' was built for iOS.

Flutter 1.15.3 及以上的版本会自动迁移你的 Xcode 项目。

你可以手动执行以下步骤进行迁移:

  1. 在 Flutter 应用目录下,使用 Xcode 打开 ios/Runner.xcworkspace

  2. Navigator 面板,定位到 Flutter 组别并移除 App.frameworkFlutter.framework

    Remove Frameworks in Xcode Navigator
  3. 在 Runner 目标的构建设置 (build settings) 的 Build Phases > Link Binary With LibrariesBuild Phases > Embed Frameworks 中确认 App.frameworkFlutter.framework 已经不存在。

    Confirm Frameworks Removed from Build Phases
  4. 修改 Runner 目标构建设置的 Build Phases > Thin Binary 构建命令为以下内容:

    /bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed
    /bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" thin
    
    Update Thin Binary Script Build Phase
  5. 在 Runner 目标的 Build Settings > Other Linker Flags (OTHER_LDFLAGS) 中添加 $(inherited) -framework Flutter

    Update Other Linker Arguments Build Setting