在本地和远程使用CocoaPods分发框架
在本教程中,我们的重点是创建一个框架,然后在本地和远程在我们的应用程序中使用。
框架是分层目录,它将共享资源(例如动态共享库,nib文件,图像文件,本地化字符串,头文件和参考文档)封装在一个程序包中。 多个应用程序可以同时使用所有这些资源。 系统会根据需要将它们加载到内存中,并在可能的情况下在所有应用程序之间共享资源的一份副本。
框架的好处
- 代码/功能模块化
- 在多个应用程序之间共享代码
- 在多个应用程序之间共享资源
- 作为第三方库分发
- 最适合并行工作的团队
为iOS创建框架
在Xcode中,选择File> New Project创建您的项目>在Framework&Library部分中,选择Cocoa Touch Framework>单击Next>输入产品名称“ MyFramework
”,如图1所示>单击Next>选择Location> Create。
Framework已创建,如图2所示,名称为MyFramework
框架的责任是从服务器获取数据并随数据一起返回给使用者。 让我们创建一个swift文件从Xcode中,选择File> File> Swift File> APIRequestLoader
> Create
如图3所示,我们完成了框架代码。 要使用此框架,客户端需要提供符合APIRequest
协议的对象,在该对象中,它使用预期的请求和响应数据类型实现make和parseResponse方法。
生成框架项目,以确保在没有生成警告或错误的情况下获得成功的生成 。
至此,我们创建了框架。 现在创建一个消费者项目。
选择“文件”>“新建”>“项目”>“在应用程序”部分中,选择“单视图应用程序”,然后单击“下一步”>在出现产品名称的对话框中: Consumer
>“下一步”>“创建”。
如图4所示,我们创建了一个消费应用程序,它将使用我们的框架服务。
使用拖放来消费框架
转到MyFramework
项目>右键单击Products文件夹下的MyFramework.framework
>单击在Finder中显示。 这将重定向框架的位置
现在打开Consumer应用程序,并将框架拖放到项目中。 确保检查是否需要复制项目,以便文件实际复制到新项目中,而不仅仅是添加引用,如图6所示。
如图7所示,将框架放入项目中。 它已添加到“链接框架和库”部分。 通过选择框架从本节中删除它,然后点击减号
现在点击Embedded Binaries上的加号并添加框架,如图8所示。
如图9所示,现在添加了MyFramework.framework
。 在“ Embedded Binaries
部分添加框架会将其也添加到“ Linked Frameworks and Libraries
部分
如图10所示,我们通过执行以下步骤来消耗我们的框架
- 首先,我们
import MyFramework
。 就像导入Foundation API一样,如果不导入它就无法访问Framework api。 - 我们在框架中使用了
APIRequestLoader
类api和框架所需的数据。 初始化类时,它将执行网络调用并解码模型(MyGitHub)
中的数据。
使用本地CocoaPods的消费框架
CocoaPods是iOS项目中流行的依赖项管理器。 这是用于管理依赖关系和版本控制的工具。
首先按照链接中的说明安装cocoapods
如果您只是进入,可以下载项目 。 回购 包含 Framework(MyFramework)项目和Consumer应用程序项目(Consumer_Part1_Starter)。
打开下载的项目文件夹,如图11所示。
打开终端并转到MyFramework
文件夹的根目录,如图12所示,然后运行以下命令
播客规范创建MyFramework
应该创建MyFramework.podspec
。 在任何文本编辑器中打开文件。 将其替换为如图13所示的代码并保存。
Pod规范描述了Pod库的版本。 它包括有关应从何处获取源,使用哪些文件,要应用的构建设置以及其他常规元数据(例如其名称,版本和说明)的详细信息。
name
→荚的名称
version
→Pod版本
platform
→规范应指出支持库的平台和相应的部署目标。
source
→应该从中检索库的位置。
至此,我们的框架已配置完毕。 现在打开Consumer应用程序项目,并删除上一节中添加的框架。 右键单击框架>选择Delete> Move to Trash,如图14所示。构建项目,您将看到错误No such module 'MyFramework'.
在下一步中,我们将通过使用Pod在本地安装框架来解决此问题
打开终端并转到Consumer应用程序的根文件夹,然后运行以下代码。 这将创建一个Podfile,如图15所示。如果您从未使用过pod,请按照本教程进行操作。
荚初始化
Podfile是一种规范,描述了一个或多个Xcode项目的目标的依赖关系
如图16所示,将podfile
代码替换为podfile
代码。在此文件中,我们说Consumer应用程序需要MyFramework
作为此项目的依赖项,并且提供了本地路径来查找依赖项。
打开终端>转到Consumer应用程序的根文件夹(创建Podfile所在的级别)>运行以下命令,如图17所示
吊舱安装
至此,我们已经配置了MyFramework的依赖项。 首先关闭Consumer应用程序,然后打开Consumer.xcworkspace.
运行项目,现在我们的应用程序可以正常运行了。
使用此命令,您正在搜索CocoaPods存储库并下载任何与Podfile条件匹配的新的或更新的Pod。 它还解决所有依赖关系,更新Xcode项目文件,以便它知道如何构建和链接Pod,以及执行任何其他所需的配置。
如图18所示,现在添加了我们的依赖项,您还可以看到源代码和框架扩展文件
至此,我们建立了我们框架的本地存储库。 现在打开MyFramework
项目,并添加新方法,该方法将返回硬编码数据,如图19所示MyFramework
您将看到Build Succeeded
打开Consumer.xcworkspace.
您将看到可以立即访问此方法,如图20所示。
使用远程存储库分发框架
本节将引导您将Pod发布到GitHub,并像第三方框架一样使用它。
在github上创建了MyFramework存储库,如图21所示
将项目克隆到一些空文件夹
将MyFramework
项目内容移动到克隆存储库文件夹中
提交并推送代码之前。 首先用以下代码替换MyFramework.podspec
代码。 我们将源URL从本地替换为远程。 现在,我们告诉podspec应该从中检索库的位置,如图24所示。
如图25所示,我们将代码推送到我们创建的存储库中
我们按下了标签,如图26和27所示。正如我们在MyFramework.podspec.
指定的MyFramework.podspec.
打开消费者应用程序podfile
然后将pod(相关性)URL从本地替换为远程。
打开终端并转到Consumer应用程序目录的根文件夹,然后运行以下代码
吊舱更新
现在如图29所示,它是使用podfile中指定的标签从远程git repo提取的
有用的链接
https://www.raywenderlich.com/5109-creating-a-framework-for-ios
https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WhatAreFrameworks.html
https://zh.wikipedia.org/wiki/Convention_over_configuration
https://guides.cocoapods.org/syntax/podspec.html
下一个
在下一部分中,我们将看到如何为需要其他库作为依赖项的库配置cocoapods