使用CocoaPods管理私人豆荚

我们大多数人每天都使用开源库。 使用CocoaPods ,在Cocoa项目中管理依赖关系几乎是轻松的 。 但是,在某些情况下,项目依赖于封闭源而不是公开可用的库或框架。 在这种情况下,您仍然可以使用CocoaPods。 CocoaPods非常适合封闭式和开放式源代码库。

为此,您需要创建一个专用规格存储库。 一旦设置好,您甚至都不会注意到公共和私有依赖项之间的区别,因为CocoaPods会为您处理所有细节。 在本教程中,您将学习如何设置私有规格存储库来管理私有库。

1.简介

如果您仅使用CocoaPods来管理公共吊舱,那么您可能不知道CocoaPods可以处理多个规格存储库。 如果在项目的Podfile中未指定任何规格存储库,则CocoaPods将退回到主规格存储库。

如果您在项目的Podfile中指定依赖 ,则CocoaPods默认在主规格存储库中搜索。 看下面的两个例子。 两个示例均产生相同的结果。 不同之处在于,我们在第二个Podfile中明确指定了规范存储库的源。

platform :ios, '8.0'

target 'Testing' do
  pod 'AFNetworking', '2.6.0 '
  pod 'SVProgressHUD', '~> 1.1'
end
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target 'Testing' do
  pod 'AFNetworking', '2.6.0 '
  pod 'SVProgressHUD', '~> 1.1'
end

如果您从未创建过Pod,也未对Pod做出任何贡献,那么您可能想知道specs存储库是什么? 规范存储库不过是一个包含Pod规范,扩展名为.podspec.podspec.json的文件的存储库。

顾名思义,specs存储库不包含Pod的源文件。 您可以浏览GitHub上的CocoaPods主规格存储库。 但是,如果您的计算机上安装了CocoaPods,则您的计算机上已经存在一个主规格库的副本。

在安装过程中,CocoaPods将主规格存储库克隆到您的主文件夹中。 您可以在〜/ .cocoapods / repos / master中找到它。

2.创建规格库

我通常使用GitHub托管Git存储库,因此这是本教程将使用的平台。 只要您的团队中的每个人都可以访问规范存储库,则在哪里托管都无所谓。

您可以创建一个免费的GitHub帐户进行后续操作,但请记住,您只能使用一个免费帐户创建公共存储库。 如果您有要开放源代码的库,则建议将Pod规范发布到由CocoaPods团队管理的主规范存储库中。 通过创建单独的公共规格存储库,您一无所获。

我们需要做的第一件事是在GitHub上创建一个私有存储库,以供我们以后添加的私有规范使用。 我给我命名为tutspods 。 GitHub建议将存储库克隆到您的计算机上,但这不是必需的。 将CocoaPods添加到CocoaPods后,它将为您克隆规格库。 这就是我们下一步的工作。

3.将存储库添加到CocoaPods

下一步是告诉CocoaPods我们刚刚创建的specs存储库。 您可以通过从命令行执行以下命令来执行此操作。

pod repo add tutspods https://github.com/bartjacobs/tutspods.git

您可能会注意到,该命令类似于将远程添加到Git存储库。 确保记住您为规范存储库指定的名称(在这种情况下为tutspods) 。 稍后我们将需要它。

每当您添加规格存储库时,CocoaPods都会将该存储库克隆到您的计算机上。 您可以通过导航到〜/ .cocoapods / repos来验证这一点。 该目录现在应包含两个规范存储库,即规范存储库和tutspods规范存储库。 除了.git文件夹之外,由于我们尚未添加任何规范,因此tutspods目录为空。

4.创建一个私人豆荚

不久前, Andy Obusek写了一篇很棒的教程,介绍如何创建您的第一个Pod。 如果您从未创建过公共或私有吊舱,那么我建议您先阅读Andy的文章。 我不会重复Andy在本教程中写的内容。

作为示例,我创建了一个微型库TSPTableView ,其中包含一个特殊的UITableView子类。 要为该库创建Pod规范,请在库的根目录中运行以下命令。

pod create spec TSPTableView

通过运行以上命令,CocoaPods将创建一个名为TSPTableView.podspec的文件。 在文本编辑器中打开文件,然后填写必填字段。 完成后,运行pod spec lint来验证pod spec。 如果pod规范未通过验证,则您将无法将该规范推送到specs存储库。

5.将规范推送到规范存储库

如果pod规范通过了验证,那么是时候将其推送到您之前创建的私有规范存储库中了。 您可以通过从命令行执行以下命令来执行此操作。

pod repo push tutspods TSPTableView.podspec

关键是您使用以前用于将专用规格存储库添加到CocoaPods的相同名称。 最后一个参数是要推送到规范存储库的pod规范的路径。

6.使用私人Pod

现在,我们可以在新项目中使用TSPTableView 。 在Xcode中创建一个项目,并通过从命令行运行pod init在项目的根部添加一个Podfile 。 这就是您完成后Podfile的外观。

platform :ios, '8.0'

target 'MyAmazingApp' do
  pod 'TSPView'
end

从命令行运行pod install以安装项目的Podfile中列出的依赖 。 您还遇到问题了吗? 我看到以下错误。

pod install
Updating local specs repositories

Analyzing dependencies
[!] Unable to find a specification for `TSPTableView`

输出结果告诉我们CocoaPods首先更新了本地规格存储库。 这意味着〜/ .cocoapods / repos目录中的存储库已更新,可以进行任何更改。

CocoaPods这样做是为了确保它具有存储在存储库中的规范的最新版本。 如果我们查看〜/ .cocoapods / repos / tutspods目录,我们可以看到TSPTableView容器的容器规范与我们预期的一样。 为什么不能的CocoaPods找到TSPTableView荚规范呢?

解决方案很简单。 在Podfile的顶部,我们需要指定CocoaPods搜索哪些规范存储库以解决项目Podfile中列出的依赖 。 这就是Podfile应该看起来像的,以解决我们的问题。

source 'https://github.com/bartjacobs/tutspods.git'
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target 'MyAmazingApp' do
  pod 'TSPTableView'
end

再运行一次pod install安装项目的Podfile中列出的依赖 。 现在,命令应成功完成,如下所示。 我当前正在使用CocoaPods 0.38.2,因此如果您使用的是其他版本的CocoaPods,则输出可能会略有不同。

pod install
Updating local specs repositories

Analyzing dependencies
Downloading dependencies
Installing TSPTableView (0.0.1)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `MyAmazingApp.xcworkspace` for this project from now on.

请注意,您在Podfile中列出规格存储库的顺序很重要。 例如,如果您分叉了一个公共吊舱,对其进行了修改,并为叉子创建了一个具有相同名称的私人吊舱,则会发生命名冲突。

对于CocoaPods而言,这不是问题,因为它将使用可以找到的具有指定名称的第一个容器。 通常,您应该将私有规格存储库放在顶部,以确保CocoaPods首先搜索该库,并在必要时退回到公共规格存储库。

结论

CocoaPods是一个很棒的工具,如果没有它我将无法使用。 我希望本教程向您展示了CocoaPods的功能强大以及使用CocoaPods创建和管理私有Pod多么容易。

翻译自: https://code.tutsplus.com/tutorials/managing-private-pods-with-cocoapods--cms-25137

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值