Xcode 12.3 failed on some 3rd framework and librarys?


I have just update Xcode to Xcode 12.3 , and my project can't compile , it complains:
Code Block
Building for iOS Simulator, but the linked and embedded framework 'ITLogin.framework' was built for iOS + iOS Simulator.

This framework is worked well before Xcode 12.3 , so what's the problem here ?

Answered by DTS Engineer in 652663022
This framework isn't built with a supported configuration -- iOS and iOS Simulator code has never been supported in the same binary. The linker in Xcode 11 began identifying these incorrect configurations and issuing warnings, and Xcode 12 goes further in identifying these issues.

The only correct way to resolve this is to rebuild the framework as an XCFramework. If this is your framework, or owned by another group in your company, follow the information in the video and the Xcode Help article.

If this framework is from a vendor, then you need to work with the vendor to get an updated version of the framework built with supported configuration.

In the discussion of this thread, there is a build script that attempts to resolve this error. Scripts like that -- anything that tries to manipulate the output with commands like lipo -- still produces an unsupported configuration in the binary. XCFrameworks are the way to go.
Someone helped me with this instructions for the same problem with TwilioVoice.framework and it worked perfect. Maybe you can adapt the instruction for your frameworks.

[https://github.com/twilio/twilio-voice-ios/issues/64#issuecomment-747186499)

Basically you separate the framework in the platforms and then you join them again as xcframework.
Finally, you include the new xcframework into your code.
Same here. 3rd party frameworks that worked fine up until 12.2 have stopped building / code signing. Going to have to downgrade to 12.2
So the problem is apple trying to force XCFramework bundle down, by breaking any project which relied on fat frameworks.
Just wow. I had a job to update broken third party dependency, now I have to repackage all of them, because who cares about compatibility. I just want to make iOS app, I don't care about M1 iOS simulators.
edford  wrote:

Scripts like that -- anything that tries to manipulate the output with commands like lipo -- still produces an unsupported configuration in the binary. XCFrameworks are the way to go.

The script at https://gist.github.com/evnik/6762d5c3a4b21f61f13b100e03b62c38 seems a legitimate way to address the issue by converting a FAT framework into an XCFramework using xcodebuild -create-xcframework, even though it uses lipo along the way.
I saw a lot of the solutions for this problem. 1. Use script https://developer.apple.com/forums/thread/669411?answerId=652489022#652489022 2. Add validate workspace's parameter to xcodeproj. I just want apple to clarify about how long fat binary still be supported. I'm afraid that if I use these solutions to avoid the fact that apple want us to use XCFramework One day apple suddenly decide to not support fat binary, then we're gonna have the real big problem.

Its working for me, just need to do is below command in terminal: also make sure you have installed command line tools from below link https://developer.apple.com/download/all/

xcrun xcodebuild -create-xcframework \
    -framework /path/to/ios.framework \
    -framework /path/to/sim.framework \
    -output combined.xcframework
Xcode 12.3 failed on some 3rd framework and librarys?
 
 
Q