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

时光总嘲笑我的痴心妄想 提交于 2020-05-24 18:14:29

问题


After updating to Catalina 10.15.4 beta with Xcode 13.4 beta, which also updated Simulator to 13.4 (921.4).

The application compiles and runs correctly on a physically attached device, but no simulators of any devices can pass this stage.

I got the errors

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

or

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

How can I fix this?


回答1:


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 in Xcode.
    2. In the Navigator pane, locate the Flutter group and remove App.framework and Flutter.framework.
    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.

  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

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

    (OTHER_LDFLAGS) add $(inherited) -framework Flutter

Hope it helps!




回答2:


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.




回答3:


After several days trying to find a solution to test the Flutter app on iOS device, I finally found this:

flutter clean
flutter build ios

-Open xCode and run app on your device.




回答4:


Updated to Xcode 11.4. Ios 13.4, Iphone X. App just fetches data using API. App started on white screen and then finally crashes, both on simulator and device.

I followed the offical guide (I also rm -rf ios/Flutter/App.framework) flutter.dev/docs/development/ios-project-migration. I ran several times flutter clean

I also tried deleting Pods/ folder and Podfile.lock, then reinstalling using pod install in the ios folder.

As I am using async data I also added as 1st line in main()

WidgetsFlutterBinding.ensureInitialized();

No help, app did not started either simulator.

Then I removed ios/ and android/ folders. After that in project folder I ran command flutter create . that regenerates mentioned folders.

After this my app started fine both on simulator and on device. I hope this would be help to others. NOTE!! if you have done any modifications manually to those folders please take backup or commit beforehand.




回答5:


I have tried the solution on the official website of flutter but it didn't work for me, so I found a temporary solution which worked for me, but it took me some hard works: Here is my example with project stuck_framework which is a fresh new project (first time run on the simulator)

  1. I created 2 folders inside flutter project called
    "ios_simulator" and "ios_real_device". enter image description here

  2. Now my first build was for the simulator, then I want to switch to a real device, I will move ios folder inside Flutter project to the "ios_simulator"

  3. I open the project with visual studio code and run "flutter create ." and now I will choose a real device to rebuild the project ( if your simulator is online, please quit ). enter image description here
  4. Now I wait for the build finish and run on the real device without any errors. Now I have 2 ios project 1 for simulators and one for real devices.
  5. Next time when I want to run on the simulator again, I just remove the current ios folder and copy the ios folder which I placed on "ios_simulator" back out to flutter project folder. Hope this help



回答6:


Manually upgrading flutter to version 1.15 solve this issue as well. Running flutter version v1.15.17 helped me.

Also, you can switch to beta or dev channels by running flutter channel command but be sure you check your code against all BC changes...




回答7:


In my case, it works only simulator(debug). if you want to deploy your app on the app store(release) i highly recommend you to upgrade flutter version using

flutter version v1.15.17

otherwise you would encounter crashed app with white screen.

just upgrade flutter version then all things work well



来源:https://stackoverflow.com/questions/60881764/flutter-building-for-ios-but-the-linked-and-embedded-framework-app-framework

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!