迦太基0.37.0已发布,现在支持XC框架??
这将消除自Xcode 12以来在迦太基发生的问题。不需要变通办法脚本,并且M1 Macs现在可以使用Carthage。
我想解释为什么Carthage需要XC框架的背景以及生成XC框架的过程。
如果您只想知道如何在迦太基中生成XC框架,请转到在迦太基中构建XC框架。
什么是XCFrameworks?
首先,让我们谈谈XC框架。
XC Frameworks本身是一项从Xcode 11开始可用的技术。
理解它的最简单方法是实际查看使用Carthage 0.37.0构建的XC框架。以下是构建RxSwift的结果。
您可以看到在
通过使用XCFrameworks,可以在一个
为什么迦太基不能在M1上工作?
M1 Mac的体系结构采用了与iOS设备相同的arm64体系结构,所有设备均已开始。
我首先要说明Carthage在Intel Macs上的工作方式。
迦太基如何在Intel Macs
上工作
即使在Intel Mac上未采用XC框架格式时,也可以使用Carthage内置的框架在实际计算机和模拟器上进行操作。
这是因为在使用Carthage进行构建时,通过命令
顺便说一句,我想我已经在构建设置的RunScript阶段设置了一个名为
M1 Mac
会发生什么
从适用于M1 Mac的Xcode 12开始,arm64已添加到此模拟器的体系结构中。由于M1 Mac具有arm64架构,因此模拟器也将是arm64。这迫使迦太基将"真实的iOS设备(arm64)"和" M1 Mac模拟器(arm64)"组合到一个框架中。这里的问题是实际的iOS设备和M1 Mac模拟器都具有相同的arm64架构。
这是我的翻译,包括解决方法脚本,但是在[日语翻译]迦太基问题,Xcode 12,XCFrameworks,Apple Silicon等文章中对此进行了详细描述。如果您有兴趣,希望您能阅读。
M1的XC Framework兼容版本吗?
不正确。
XC框架本身可以在Intel Mac上使用,最重要的是,它省去了将框架组合为一个框架并使用
由于设置也很简单,因此我认为将来即使不是M1 Mac,使用XC Frameworks格式也更有利。
用迦太基
构建XC框架
在
中,使用XC Frameworks构建迦太基的过程如下所示。
它写的很好,所以没有什么特别的说,但是您可以通过以下3个步骤以XC Frameworks格式进行构建。
-
例如,
carthage update --platform ios --use-xcframeworks 。 -
这将在
Carthage/Build 下生成.xcframework 。
就是这样。
到目前为止,我认为
XcodeGen
中的设置
我们还将向您展示如何将XC框架与XcodeGen一起使用。以前,XcodeGen提供了一个名为
project.yml
1 2 3 4 5 6 | targets: SomeProject: dependencies: - framework: "Carthage/Build/RxSwift.xcframework" - framework: "Carthage/Build/RxCocoa.xcframework" - framework: "Carthage/Build/RxRelay.xcframework" |
摘要
我担心在Xcode 12之后以及以后的迦太基会发生什么变通方案脚本,但是有了XC Frameworks的支持,看来我将来仍可以继续发挥积极作用。不是?
有一个强大的竞争对手SPM,但我希望Carthage(它可以缩短构建时间)将继续保持最佳状态。
参考
-
迦太基问题,Xcode 12,XCFrameworks,Apple Silicon等|由Quentin Fasquel提供|中
- [日语翻译]迦太基问题,Xcode 12,XCFrameworks,Apple Silicon等| zeero发表| 2021年1月|中
- 如何声明一个迦太基构建的XCFramework依赖关系·第1006期·yonaskolb / XcodeGen