将框架添加到iOS应用
如何使用Git子模块向Xcode项目添加框架。
介绍
在Xcode中构建iOS应用时,我们经常需要从另一个项目中添加代码。 向其他应用程序添加功能的项目通常旨在构建“框架”目标。 框架使您的项目受益于其他人的辛苦工作,因此您不必重新发明相同的轮子。
我们可以下载框架代码文件的副本并将其添加到我们自己的项目中。 但是,我们的副本将立即与原始存储库不同步。 为了继续享受别人的工作带来的好处,我们最好使用使我们的副本与原始副本保持同步的机制添加“子项目”。
添加外部存储库,子项目和框架
通常,要在Xcode中使用外部框架,您需要:
- 将某种同步链接添加到外部存储库并下载。
- 在Xcode的文件浏览器中,将外部
.xcodeproj
(Xcode项目)文件作为子项目添加到您自己的项目中。 - 将框架添加到项目的构建阶段。
实际上,这实际上比听起来简单得多。 例如,步骤2是一次拖放操作,而步骤3涉及单击两个按钮。
在本教程中,我们将详细介绍这些步骤。
如果在任何时候都让您感到困惑,那么我建议您阅读“构建像Lego这样的应用程序”教程,该教程假定您以前没有Xcode或编码知识,并逐步构建应用程序,包括添加框架(在教程中)。 8)。
管理外部存储库的选择
有多种机制可用于将子项目同步到您自己的项目中。 它们包括:
- Git的子模块
- 可可豆
- 迦太基
使用子模块是Git版本控制系统的固有组成部分,并且已经存在了很长时间。 这样一来,您无需安装其他任何东西即可工作,并且相对易于使用。 它已集成到主要的Git流中,因此,例如,当您提交代码时,Git会自动知道要提交子模块代码中的所有更改。 如果您为Git使用GUI,例如SourceTree,它将为您处理子模块。
我听说过,子模块中引用最多的限制是难以管理子模块之间的交叉依赖关系,其中两个子模块可能需要各自加载第三个子模块。
CocoaPods处理交叉依赖关系,并处理上述所有三个步骤。 但是,我认为在没有GUI工具的情况下进行设置需要花费更多时间,并且这阻碍了我对子模块进行更改的能力。
在本教程中,我们将使用一个子模块。
BFWControls框架
在本教程中,我们将向Xcode项目添加一个名为BFWControls的框架。 这些步骤与添加任何框架相同。 如果要添加其他框架,可以按照此处的步骤进行操作,但只需将BFWControls引用替换为所需的存储库即可。
BFWControls包含大量功能,可简化Xcode的Interface Builder中的可视化应用程序制作。
创建自己的Xcode项目
如果您已经有一个要在其中添加框架的Xcode项目,那么您都准备开始本教程。
如果您尚未准备好Xcode项目,则可以使用任何iOS模板创建一个新项目。
或者,在添加框架后,跳至在Storyboard教程中嵌入Xib以创建具有自定义视图的基本应用程序,以测试框架是否正常运行。 在本教程的其余部分中,我将使用XibSample
项目中的快照。 如果您使用的是不同的Xcode项目,那么您的屏幕当然看起来会略有不同。
准备一个子模块文件夹
我们可以将子模块代码放在Xcode项目中的任何位置,但是让我们创建一个Submodules
文件夹以使其明显分开。
X在Xcode中,添加一个名为Submodules的新组。
👉启动Terminal并cd
到新的Submodules目录。 只需将Xcode的Submodules
文件夹直接拖到“终端”窗口中,并在松开鼠标按钮的同时按住Command
键即可做到这一点。
添加子模块
👉仍在终端中,键入(或复制并粘贴):
git submodule add https://github.com/BareFeetWare/BFWControls.git
👉点击Return
。
Terminal在终端中,Git将下载BFWControls“仓库”(存储库)并配置您的主仓库以将其用作子模块。
添加子项目
👉在Finder中的BFWControls
文件夹内,新添加的BFWControls
文件夹内,找到BFWControls.xcodeproj
文件。
from将BFWControls.xcodeproj
文件从Finder拖到Xcode的BFWControls.xcodeproj
组文件夹中。
添加框架
X单击Xcode中的XibSample
主项目文件。 选择应用目标和“ General
选项卡。 向下滚动到“ Embedded Binaries
部分,然后单击+
按钮。
code Xcode显示框架列表。 选择第一个BFWControls.framework
(注意, 不是 BFWControls Demo.app
)。
👉单击Add
按钮。
👉建立项目。
而已。 该框架已添加到我们的项目中。
概括
在本教程中,我们在Xcode项目中添加了一个子模块,在Terminal中使用了一个单行命令。 通过将BFWControls.xcodeproj文件从Finder拖到Xcode项目的File Navigator中,我们添加了一个子项目。 最后,我们将框架添加为嵌入式二进制文件。
如果您想知道BFWControls框架可以做什么,请遍历Storyboard教程中的NibView
,以快速了解NibView
工作原理。 有关功能的更详细介绍,请逐步完成详细的“构建类似Lego的应用程序”教程。