通过Cocoapods分发Swift框架
出色的软件也具有出色的安装经验。 如果该软件太难安装,将很少使用它。
在我以前的文章中,我们学习了如何使用Swift框架重用和共享代码。 我们创建了一个包含框架目标的项目,该目标包含一个登录屏幕。 然后,我们在Xcode工作区中添加了框架和应用程序项目。 最后,我们通过工作空间将框架链接到应用程序并使用了该框架。
我们有责任获取并链接框架项目。 我们甚至没有办法管理框架的不同版本。
因此框架的安装和管理经验不是很好。 有没有更简单的方法来管理和安装框架? 🤔
就在这里! 🎉Cocoapods是一种流行的工具,可简化Swift框架的安装和共享。
在本文中,我们将逐步介绍通过Cocoapods共享Swift框架的过程。 稍后,我们将在应用程序中使用它。
我们将在Cocoapods将访问的git存储库中托管我们的框架。 在本文中,我假设您熟悉git 。
创建框架也不在本文讨论范围之内。 要查看如何创建框架,请查看我以前的文章。 将提供一个框架项目。
最后,我们只会谈论Cocoapods对于Swift框架可以做什么。
在开始之前,让我们快速了解Cocoapods的工作方式。 它将帮助我们与之合作。
本指南使用Xcode 10.1和Swift 4.2。
Cocoapods如何运作?
在本节中,我们将从两个不同角度简单地概述可可豆的工作方式。
- 将框架安装到iOS应用程序项目
- 向Cocoapods发布框架。
如果您已经熟悉Cocoapods的工作原理,请随时跳过任何或所有部分。
1.将框架安装到iOS应用程序项目
让我们开始看当Cocoapods如何工作的简化概述,当我们要求该工具将名为FrameworkA的Swift框架安装到名为MyApp的 iOS应用程序项目中时。
我们告诉Cocoapods,我们要在项目目录根目录下名为Podfile
的文件中的MyApp target中安装FrameworkA 。
按照我们的示例, Podfile
看起来应类似于以下内容:
以“ MyApp”为目标
吊舱“ FrameworkA”
结束
在上面的示例中,我们告诉Cocoapods我们的项目有一个名为MyApp的目标。 我们还告诉Cocoapods, MyApp目标需要一个名为FrameworkA的框架 ,该框架通过Cocoapods共享。 Cocoapods中的共享框架称为pod
。
捕获项目目标及其要求之后,我们必须告诉Cocoapods根据项目规范来建立我们的项目。 为此,我们必须运行pod install
。
在pod install
期间,Cocoapods将读取我们的Podfile
并执行任何必要的操作以相应地配置我们的项目。
这是pod install
过程中发生的情况的快速示意图:
当Cocoapods读取我们的Podfile
它首先获取FrameworkA的规范。 存放规范的地方称为规范存储库或商店。 默认情况下,它仅搜索Cocoapods规范存储库。 但是,我们可以指向其他规范存储库,甚至我们自己的。
注意,我们没有指定要安装的FrameworkA版本。 在这种情况下,Cocoapods将获取可用的最新版本。
在pod install
执行结束时,Cocoapods将为我们生成一个工作空间,其框架已经链接到我们的应用程序目标! 🎉
仅需很少的步骤,我们就可以完成框架的安装,而仅使用Apple提供的本地工具就需要执行更多的步骤。
2.发布框架到Cocoapods
现在,我们了解了Cocoapods如何安装框架,为了使其他应用程序使用我们的框架,我们要做的唯一一件事情就是将框架的规范发布到规范存储库中。
让我们来体验一下吧!
入门
在本指南中,我们将:
- 安装Cocoapods
- 检索包含框架目标的Xcode项目
- 创建一个本地git仓库来托管我们的框架项目
- 创建本地规范存储库
- 将我们的框架规范发布到我们的规范库
- 将我们的框架安装到应用程序中
在开始潜水之前,让我们打开终端应用程序。 在整个指南中,我们将使用终端来完成框架的共享和安装。
1.安装Cocoapods
首先,让我们安装Cocoapods,该工具将简化共享和安装框架。 在终端输入或中,复制并粘贴以下命令。
宝石安装cocoapods
2.检索启动程序项目
接下来,让我们设置入门框架项目,该项目将通过Cocoapods共享。 让我们通过终端下载启动项目并将其放置在我们的主目录中。
光盘〜
curl -o MyFramework.zip -L https://www.dropbox.com/s/5vykpag4xb5vh51/MyFramework.zip -s
解压-q MyFramework.zip
3.创建本地托管的git存储库
对于本文,我们将在Mac中本地托管MyFramework项目的git存储库。 要创建本地托管的git存储库,请执行以下命令:
mkdir〜/ MyFramework.git
cd〜/ MyFramework.git
git init-裸
在上面,我们创建了一个目录来保存git仓库(扩展名为.git ),并在该目录中初始化了一个git仓库。
现在我们有了一个存放框架的地方,让我们将MyFramework项目内容添加到该地方。 执行以下命令:
cd〜/ MyFramework
git初始化
git remote add origin〜/ MyFramework.git
git添加
git commit -m“初始提交”
git tag -a 0.0.1 -m“版本0.0.1”
git push origin -u主
git push origin-标签
现在,我们将源代码存储在本地git存储库中。
4.创建本地规范存储库
让我们创建一个存储规范的存储库。 这是我们发布框架规范的地方。 为此,请执行以下命令:
mkdir〜/ MySpecs.git
cd〜/ MySpecs.git
git init-裸
git clone〜/ MySpecs.git〜/ MySpecs
cd〜/我的规格
触摸README.md
git添加README.md
git commit -m“初始提交”
git push origin -u主
pod repo添加我的规格〜/ MySpecs.git
前几个命令与上一节类似,在前一节中我们创建了一个git存储库来保存我们的框架。 最后一个命令pod repo add my-specs ~/MySpecs.git
告诉Cocoapods将~/MySpecs.git
添加到规范存储库列表中,并为其指定my-specs
名称。 您可以通过运行pod repo list
来检查Cocoapods拥有的规范存储库pod repo list
。
5.发布MyFramework的规范
在推动Cocoapods规范之前,让我们在项目中添加git标签,以便Cocoapods可以引用项目的特定快照。 git标签将为我们当前的项目状态添加一个标识符。 由于git不在本指南的范围内,因此只需知道添加到我们的项目框架中就不会影响通过Cocoapods交付的代码,因为Cocoapods将引用项目的当前状态。
让我们将框架的当前状态标记为版本1.0.1。 运行以下命令:
cd ~/MyFramework
git tag -a 0.0.1 -m "Version 0.0.1"
接下来,让我们向项目添加一个Cocoapods规范。 运行以下命令:
猫>〜/ MyFramework.podspec <<-EOF
Pod :: Spec.new do | s |
s.name =“ MyFramework”
s.version =“ 0.0.1”
s.summary =“ MyFramework项目的简短描述。”
s.description = <<-DESC
MyFramework项目的扩展描述。
数据中心
s.homepage =“ http://your.homepage/此处”
s.license = {:type =>'版权',:text => <<-许可证
版权2018
许可授予...
执照
}
s.author = {“ $(git config user.name)” =>“ $(git config user.email)”}
s.source = {:git =>“ $ HOME / MyFramework.git”,:tag =>“#{s.version}”}
s.source_files =“ MyFramework / ** / *。swift”
s.resources =“ MyFramework / ** / *。xib”
s.platform =:ios
s.swift_version =“ 4.2”
s.ios.deployment_target = '12 .0'
结束
紧急行动
上面的命令将创建一个名为MyFramework.podspec的文件,并将EOF
之间的内容添加到该文件中。
在这里,我们为Cocoapods添加了必要的信息,以便能够获取正确的代码并将其安装到installers项目中。 您可以在此处找到其他Cocoapods规范属性,以根据您的项目需求配置框架。
现在,我们已经创建了一个规范。 最后要做的是通过将规范推送到规范存储库,使该规范对框架使用者可用。
运行以下命令以将MyFramework规范推送到私有规范存储库:
pod repo push my-specs〜/ MyFramework.podspec
做得好! 现在,我们的框架已列在我们的规范存储库中,可供应用程序使用! 在最后一步,我们将通过应用程序使用MyFramework。
6.在应用程序中安装MyFramework
在我们可以通过Cocoapods测试MyFramework的安装之前,我们需要一个应用程序来安装它。 让我们从上一篇文章中获取MyApp项目。
运行以下命令:
光盘〜
curl -o MyApp.zip -L https://www.dropbox.com/s/jfdrj58lgrhjc4t/MyApp.zip? -s
解压-q MyApp.zip
接下来,让我们在MyApp中安装MyFramework。 我们首先必须创建一个Podfile
,在其中指定要在MyApp中安装的MyFramework。 运行以下命令:
cd〜/ MyApp
猫> Podfile <<-EOF
以“ MyApp”为目标
use_frameworks!
pod'MyFramework','0.0.1',:source =>“ $ HOME / MySpecs.git”
结束
紧急行动
注意use_frameworks!
使用框架时是必需的。
接下来,让我们告诉Cocoapods在Podfile中安装指定的框架。 运行pod install
命令来执行此操作。
在Xcode中打开MyApp.xcworkspace
并运行该应用程序。 这就是全部! 🥳
最后的笔记
在结束本文之前,请注意将MyFramework源代码复制到Pods
项目中并包装在框架目标中。 每次我们构建应用程序时,都会同时构建MyFramework,然后将其附加到应用程序。
摘要
在本指南中,我们了解到
- 椰子足如何运作
- 如何通过Cocoapods分发框架
- 如何通过Cocoapods安装我们的分布式框架
从集成者的角度来看,我们已经看到使用Cocoapods安装和管理框架是多么简单。 Cocoapods的简单性可以吸引更多开发人员安装和使用您的框架。
下一步
在本指南中,我们看到Cocoapods与集成商共享源代码和资产,然后将它们打包在集成商端的框架中。 我们看到集成商随后将其编译为他们的应用程序构建过程的一部分。 但是,如果我们不想共享代码怎么办? 或者,也许我们想节省时间,以便从我们的应用程序中编译大量共享但很少更改的代码。 有没有一种方法可以通过Cocoapods共享已编译的框架?
您将在下一篇文章中找到该问题的答案。 在Twitter或Medium上关注我,敬请期待!
- 如何在多个Framework子项目中使用CocoaPods
- Cocoapodstesting链接器错误
- 名为“ Objective-C和带有CocoaPods的Swift”的沼泽
- 创buildiOS模拟器Cocoapod项目的构build
- JUCE和React Native – 链接器错误“ld:找不到-lReact的库”
- 从Pod导入Objective C标头? 十分简单!
- iOS,ld:框架没有find用于架构arm64的GoogleMaps
- 我怎么能从一个NSBundle中的Assets.car(编译版本的xcassets)加载图像?
- SpeechKit Pod for Swift会导致未声明的types错误