在Xcode 12.0中通过Carthage带来iOS框架

问题描述

我正在使用Xcode 12.0和Carthage 0.35.0,在我开发的框架上执行Carthage bootstrap --platform iOSCarthage update --platform iOS --no-use-binaries时遇到此错误。我在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

当我查看上述日志文件时。我看到构建成功。但是,当我打开Xcode并尝试构建应用程序时,会看到以下消息:/Users/myname/Developer/myapp/ios/myapp.xcodeproj Building for iOS Simulator,but the linked framework 'MyFrameworkKit.framework' was built for iOS.

从Xcode 11.7到Xco​​de 12.0,我可以带入应用程序的框架类型必须有所改变。你知道我想念的是什么吗?

解决方法

答案很简单:迦太基0.35.0与Xcode 12不兼容。他们正在研究修补程序。在此之前,there is a workaround

,

现在 Carthage 0.37 终于能够构建 XCFrameworks ? 这使得它与 Xcode 12 兼容并且可以删除 workaround。只需执行以下步骤:

# 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

有关详细信息和从框架到 XCFrameworks 的迁移指南,请参阅 Github release 0.37.0。该指南告诉您如何集成 xcframeworks 以及您必须从项目中删除的内容。

,

检查是否为“。”包含在框架搜索路径中。如果有删除的话。

,

Carthage 0.36.1 仍然有这个错误。

,

我在这里使用了建议:https://newreleases.io/project/github/Carthage/Carthage/release/0.37.0

基本上:要将 XCFrameworks 构建到您的应用程序中,请使用 --use-xcframeworks 运行 Carthage 并将生成的 XCFrameworks 拖到您的 Xcode 目标的嵌入式二进制文件部分...

这是我使用的命令: carthage bootstrap --platform iOS --use-xcframeworks