在 Xcode 12.0 中通过 Carthage 引入 iOS 框架

Bringing iOS Frameworks through Carthage in Xcode 12.0

我正在使用 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 到 Xcode 12.0,我可以将哪种类型的框架构建到我的应用程序中一定发生了变化。你知道我错过了什么吗?

更新:

我一直在成功使用下面接受的答案中建议的解决方法。好像有一个新的迦太基版本,我还必须尝试。但它确实说它解决了这个问题: https://github.com/Carthage/Carthage/releases/tag/0.36.1

答案很简单:Carthage 0.35.0 与 Xcode12 不兼容。他们正在修复。到那时,there is a workaround.

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

Carthage 0.36.1 仍然有这个错误。

现在 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 以及您必须从项目中删除的内容。

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

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

这是我使用的命令: 迦太基 bootstrap --platform iOS --use-xcframeworks