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

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


Xcode 11.4 changed the way frameworks are linked and embedded, and you may experience issues switching between iOS devices and simulators. Flutter v1.15.3 and later will automatically migrate your Xcode project.

To get unstuck, follow the instructions below;

  • Quick fix (make your simulator work)

rm -rf ios/Flutter/App.framework

  • Official recommended Steps to migrate manually

    1. From the Flutter app directory, open ios/Runner.xcworkspace inXcode.
    2. In the Navigator pane, locate the Flutter group and remove App.framework and Flutter.framework.enter image description here
    3. In the Runner target build settings Build Phases > Link Binary With Libraries confirm App.framework and Flutter.framework are no longer present. Also confirm in Build Phases > Embed Frameworks.

enter image description here

  1. Change the Runner target build settings Build Phases > Thin Binary script as follows:

    /bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed

    /bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" thin

enter image description here

  1. In the Runner target Build Settings > Other Linker Flags

    (OTHER_LDFLAGS) add $(inherited) -framework Flutter

enter image description here

Hope it helps!


  1. Select your Target from "TARGETS"
  2. Select 'Build Settings'
  3. Under 'Build Options' -> Set 'Validate Workspace' To 'YES'
  4. After successfully building, set it back to 'NO'

Reason :"In Xcode 12+, the default option for Validate Workspace is internally not set. We need to set it manually to avoid this kind of error. There is no problem in setting back to the default 'NO' option.


Xcode 11.4 changed the way frameworks are linked and embedded, which is causing issues switching between iOS devices and simulators.

Please follow official guide on how to migrate your project.