人们通过构建有用的代码块来构建Framework框架来帮助社区,并将其分发给其他人,这样他们就可以直接使用它,而无需再次重写所有逻辑。
它在软件行业中非常有用,您可以始终依靠他人以及他人投入大量时间进行完善和测试以供他人使用的开源库/框架,我们作为软件工程师,在方便时应利用它我们。
在大型团队中,人们建立框架以使工作模块化,这有助于大型团队拆分工作,而较小的团队可以孤立地工作。同样,能够在公司内的不同应用程序中重用相同的组件/框架,而不必从一个地方重写或复制/粘贴该代码。
在本文中,我将介绍如何构建框架并使用xcode测试框架。
本文是由xcode版本12.4 编写和测试的。
打开xcode并从框架项目开始。
我将其命名为mine FruitBasket,您可以选择任何内容,然后将其保存到桌面上,以便以后在构建xcframework时可以轻松地访问它。
什么是FruitBasket?这是我为本文编写的一个愚蠢的示例,它基本上是一篮水果,我们应该能够向其中添加水果,并且该篮应该告诉我们其中有多少种水果,它们是什么。挺有趣的,不是吗?
首先,我将添加一个快速文件以包含要使用的多种水果的简单枚举,然后将其命名为“水果”。
如您所见,我添加了public access修饰符,以便能够从框架外部(即,在导入此框架时从我们的项目中)访问该枚举。
我将为水果篮添加一个简单的类。随意添加仅一个功能进行打印Hello, world,在此示例中这并不重要。
现在框架代码已经准备就绪,让我们生成框架。
这是您需要了解的有关xcframeworks的知识,它们是您为他人分发的预编译代码(二进制代码)。
Xcode为特定的体系结构构建了framworks,因此,xcode将为模拟器构建框架,为iOS设备构建另一个框架,为macOS和tvOS构建另一个框架。
在大多数情况下,当您将框架分发给客户时,您不会为它们提供单独的框架,而当它们在模拟器或iPhone设备上运行时它们会被替换,我们将创建所需的所有框架,然后使用LIPO工具来帮助我们将所有这些框架组合到一个通用框架中.framework并进行分发。在此链接中-Yousef Hamza写了一篇非常详细的文章,介绍了如何使用LIPO。
但是,由于Apple引入了新的xcframework,因此我们不再需要LIPO。
因此,让我们看看如何创建它。
首先从xcode中的构建设置启用 “分发的构建库”。
然后,打开一个终端窗口并导航到您的项目目录,在我的情况下,该目录保存在我的桌面上
注意:以下所有命令均用于FruitBasket,如果您以不同的方式命名项目,则必须使用框架名称调整所有命令。
cd ~/Desktop/FruitBasket/
并编写以下命令,这将创建一个可以在模拟器上运行的框架。
xcodebuild archive \
-scheme FruitBasket \
-archivePath ~/Desktop/FruitBasket-iphonesimulator.xcarchive \
-sdk iphonesimulator \
SKIP_INSTALL=NO
等待它完成,您将看到成功消息。
检查您的桌面,您应该看到已经在其中创建了名称为FruitBasket-iphonesimulator.xcarchive的xcarchive。
然后编写此非常相似的命令为iOS设备创建另一个命令。
xcodebuild archive \
-scheme FruitBasket \
-archivePath ~/Desktop/FruitBasket-iphoneos.xcarchive \
-sdk iphoneos \
SKIP_INSTALL=NO
成功之后,您现在应该将两个xcarchives与我相同
在这里,我们需要将两者结合在一起xcframework,将follow命令复制并粘贴到您的终端中,然后按Enter
xcodebuild -create-xcframework \
-framework ~/Desktop/FruitBasket-iphonesimulator.xcarchive/Products/Library/Frameworks/FruitBasket.framework \
-framework ~/Desktop/FruitBasket-iphoneos.xcarchive/Products/Library/Frameworks/FruitBasket.framework \
-output ~/Desktop/FruitBasket.xcframework
您应该知道xcframwork已成功编写。
检查您的桌面并寻找 YourFrameworkName.xcframework
从xcode创建一个新项目,单视图应用程序可以进行测试。
通过将您刚刚创建的xcframework文件拖放到Framworks,Libraries和Embedded Content中来添加它
现在切换到您的视图控制器并导入框架并开始对其进行测试。
在模拟器和真实设备上运行它,它应该运行并为您提供相同的结果。
恭喜您创建xcframework了可同时在模拟器和设备上运行的第一个程序。
Github用于FruitBasket的存储库
要了解有关二进制框架及其接口以及它们如何工作的更多信息,请观看WWDC精彩视频
https://medium.com/swlh/how-to-build-xcframework-with-xcode-b3d0b3c08f43