Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bringing iOS Frameworks through Carthage in Xcode 12.0

I am using Xcode 12.0 and Carthage 0.35.0 and when I do Carthage bootstrap --platform iOS or Carthage update --platform iOS --no-use-binaries on a framework that I have developed I get this error. I did not have this problem in Xcode 11.7.


*** Building scheme "MyFrameworkKit" in MyFrameworkKit.xcodeproj
Build Failed
    Task failed with exit code 1:
    /usr/bin/xcrun lipo -create /Users/myname/Library/Caches/org.carthage.CarthageKit/DerivedData/12.0_12A7209/MyFrameworkKit/579b0a4ac155ab413da1d73609bf5f24e5ed7cc8/Build/Intermediates.noindex/ArchiveIntermediates/MyFrameworkKit/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/MyFrameworkKit.framework/MyFrameworkKit /Users/myname/Library/Caches/org.carthage.CarthageKit/DerivedData/12.0_12A7209/MyFrameworkKit/579b0a4ac155ab413da1d73609bf5f24e5ed7cc8/Build/Products/Release-iphonesimulator/MyFrameworkKit.framework/MyFrameworkKit -output /Users/myname/Developer/myapp/ios/Carthage/Build/iOS/MyFrameworkKit.framework/MyFrameworkKit

This usually indicates that project itself failed to compile. Please check the xcodebuild log for more details: /var/folders/11/tjwvq_yx4mj042kv46mxz1wh0000gn/T/carthage-xcodebuild.gaIzr4.log

When I look at the log file mentioned above. I see that the build the was successful. But when I open Xcode and try to build the app I see the message: /Users/myname/Developer/myapp/ios/myapp.xcodeproj Building for iOS Simulator, but the linked framework 'MyFrameworkKit.framework' was built for iOS.

Something must have changed in what type of framework build I can bring into my app from Xcode 11.7 to Xcode 12.0. Do you know what it is that I am missing?

Update:

I have been using the workaround suggested in the accepted answer below successfully. Seems like there is a new Carthage release that I yet I have to try. But it does say that it fixes this issue: https://github.com/Carthage/Carthage/releases/tag/0.36.1

like image 524
Dogahe Avatar asked Sep 17 '20 22:09

Dogahe


2 Answers

I used the suggestion here: https://newreleases.io/project/github/Carthage/Carthage/release/0.37.0

Basically: To build XCFrameworks into your app, run Carthage with --use-xcframeworks and drag the produced XCFrameworks into your Xcode target’s Embedded binaries section...

This is the command I used: carthage bootstrap --platform iOS --use-xcframeworks

like image 64
uudaddy Avatar answered Sep 19 '22 15:09

uudaddy


Now Carthage 0.37 finally is capabable of building XCFrameworks 🎉 This makes it compatible with Xcode 12 and the workaround can be deleted. Just perform the following steps:

# Delete carthage cache
rm -rf ~/Library/Caches/org.carthage.CarthageKit
# Delete carthage build folder
rm -rf Carthage/Build
# Delete DerivedData folder
rm -rf ~/Library/Developer/Xcode/DerivedData
# Build all dependencies as XCFrameworks
carthage bootstrap --use-ssh --use-xcframeworks --cache-builds

See the Github release 0.37.0 for detailled information and a migration guide from frameworks to XCFrameworks. The guide tells you how to integrate the xcframeworks and what you have to remove from your project.

like image 33
blackjacx Avatar answered Sep 19 '22 15:09

blackjacx