Cocoa包管理器之CocoaPods详解

CocoaPods在Cocoa开发日常工作中经常用到的包管理器,即依赖管理工具。有的项目也有用Carthage的,Carthage是一个比较新的依赖管理工具,是使用Swift语言开发的。Carthage在上家公司的一个项目中实践过一些,用着也挺方便。本篇博客就先系统的了解一下CocoaPods的使用方式和工作原理, 然后在下篇博客中会系统的了解一下Carthage的使用方式和工作原理,这两个依赖仓库系统梳理完毕后,会做一个比较。

CocoaPods是个老生常谈的话题。在之前的博客中也有相关内容的涉及,但是不够系统全面。本篇博客会系统的梳理一下CocoaPods, 但是接下来几篇博客中会聊一些Carthage以及其源码解析的相关内容。

(注:博客中的有些内容是自己根据具体的事例而总结出来的,有些地方如果理解偏差,还请大家进行斧正)

 

一、What is CocoaPods

首先来看一下什么是CocoaPods, 下方是CocoaPods官网上对CocoaPods的解释。

CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 45 thousand libraries and is used in over 3 million apps. CocoaPods can help you scale your projects elegantly.

上面大概意思是CocoaPods是Swift和Objective-C语言中Cocoa项目中依赖的管理工具。其中涵盖了4.5万个库,被300万个App使用。CocoaPods可以帮助你优雅的扩从你的项目。

简单点儿说CocoaPods就是Cocoa工程中被广泛使用的包管理器。

  二、Install CocoaPods

看完介绍,接下来简单看一下CocoaPods的安装。CocoaPods的编译和运行需要Ruby环境的支持。在OS X上已经默认安装了Ruby环境,官方推荐使用默认的Ruby环境。

可以通过下方的命令来安装CocoaPods。在安装时需添加上sudo, 使用系统权限来进行安装。下方的命令也可以用来更新CocoaPods

按照命令:sudo gem install cocoapods
卸载命令:gem uninstall cocoapods

因为我的本地之前已经安装过CocoaPods, 下方是进行的覆盖安装,也相当于更新了。具体如下所示
  

Cocoa包管理器之CocoaPods详解

 

 

三、Get Started

安装完CocoaPods后,来看一下CocaPods的简单使用。虽然在之前的博客中不止一次的用到CocoaPods, 但是在本篇博客安装完CocoaPods后,接下来我们来简单的感受一下CocoaPods的具体使用。

1、Create Podfile

在CocoaPods管理的工程中通过名为Podfile的文本文件来描述相关的依赖信息。下方就是在我们已有的工程中创建了一个Podfile文件,将下方的内容输入到文件中。在该文件中通过pod来引入相关的仓库,后方跟的是仓库的版本号。下方的use_frameworks!则表明依赖的库编译生成.frameworkds的包,而不是.a的包。

platform :ios, '9.0' use_frameworks! target 'CocoaPodsTestProject' do pod 'AFNetworking', '~> 2.6' end

下方就是创建Podfile文件,然后将上述的内容输入到该文件中。
  

Cocoa包管理器之CocoaPods详解

上面的platform指定的版本是仓库兼容的最小版本。target则指定的是作用于工程中的那个目标。pod则用来指定相关的仓库及仓库版本。下方是相关仓库版本的几种常见的指定方式:

pod 'xxxx' : 后方没有指定版本,则表示使用仓库的最新版本。

pod 'xxxx', '2.3' : 使用xxxx仓库的2.3版本。

pod 'xxxx', '~>2.3': 则表示使用的版本范围是 2.3 <= 版本 < 3.0。如果后方指定版本是~>2.3.1, 那么则表示使用的版本范围是 2.3.1 <= 版本 < 2.4.0。

pod 'xxxx', '>2.3': 使用大于2.3的版本。

pod 'xxxx', '>=2.3': 使用2.3及以上的版本。

pod 'xxxx', '<2.3': 使用小于2.3的版本。

pod 'xxxx', '<=2.3': 使用小于等于2.3的版本。

 

除了上述的版本指定方式,我们还可以通过指定相关代码仓库的路径来指定相关的依赖,比如使用path来指定本地的相关仓库,使用git来指定远端的git仓库。下方是常用的几种方式:

pod 'xxx', :path => '本地代码仓库的路径/xxx.podspec' #使用该方式可以指定本地存在的依赖路径(podspec文件稍后会结介绍到)。

pod 'xxx', :git => 'git仓库地址' #可以通过git仓库地址来加载相关依赖。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxgfz.html