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

13

我正在使用Xcode 12.0和Carthage 0.35.0。当我在我开发的框架上执行Carthage bootstrap --platform iOS或者Carthage 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,我可以从中带入哪种类型的框架构建似乎发生了变化。你知道我错过了什么吗?
更新:
我一直在成功使用下面接受答案中建议的解决方法。似乎有一个新的Carthage版本,我还没有尝试。但它确实说它修复了这个问题:https://github.com/Carthage/Carthage/releases/tag/0.36.1

5个回答

12
简单来说,Carthage 0.35.0 不兼容 Xcode 12。他们正在努力修复这个问题。在那之前,有一个解决方法。请参考此链接

4
谢谢!特别是这个评论,在那个讨论中它为我解决了问题。 - NRitH

3

现在,Carthage 0.37 终于可以构建 XCFrameworks 了。这使它与 Xcode 12 兼容,而解决方法已经可以删除。只需执行以下步骤:

# 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

请查看Github 0.37.0版本发布的详细信息和从frameworks到XCFrameworks的迁移指南。该指南告诉您如何集成xcframeworks以及需要从项目中删除的内容。


1
我使用了这里的建议:https://newreleases.io/project/github/Carthage/Carthage/release/0.37.0 基本上是这样的:要将XCFrameworks构建到您的应用程序中,请使用--use-xcframeworks运行Carthage,并将生成的XCFrameworks拖入您的Xcode目标的“嵌入式二进制文件”部分...
这是我使用的命令: carthage bootstrap --platform iOS --use-xcframeworks

0

检查框架搜索路径中是否包含“.”,如果有则删除它。


0

Carthage 0.36.1仍然存在这个bug。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接