一、CocoaPods简介
CocoaPods
是一个库管理工具,支持Swift
和Objective-C
编写的工程,CocoaPods
有丰富的开发库,可以帮助开发者快速集成并使用这些开源库,从而提高开发效率。
二、CocoaPods安装
安装部分就不介绍的特别细了,介绍一些相关的工具和大体流程,帮助大家可以全面的了解。
CocoaPods
是通过ruby
语言编写。需要使用ruby
的库管理软件gem
来安装,ruby
本来是macOS
自带的,但我在使用过程中遇到了一些问题,所以我又自己用homebrew
装了一个ruby
(也可以用rvm
安装ruby
,rvm
是ruby
的版本管理器,全称Ruby Version Manager
)。
由于天朝网络限制,gem默认的软件源地址是不能访问的,所以需要切换到国内的镜像,最早是淘宝镜像,现在是ruby-china
。切换源地址后可以正常用gem install
了【切换源的方式-官网介绍】。
一切OK后,运行CocoaPods
安装命令sudo gem install cocoapods
就可以了。如下图,我安装的版本是1.3.1,帮助可以通过`--help查看
ps:几个工具的官网地址,啥博客都不如官网准确!
- RVM——https://www.rvm.io
- Homebrew——https://brew.sh/index_zh-cn.html
- CocoaPods——https://cocoapods.org
- Ruby——http://www.ruby-lang.org
三、CocoaPods使用之——App集成
CocoaPods
最常用的方式就是在App开发中,通过快速集成一些常用的第三方库,来提高开发效率。这个过程一共分为三步:
- 创建App工程
- 创建并编写Podfile
- 执行
pod install
其中,编写Podfile是一个很重要的过程,我们一起来认识一下这个东东。
-
Podfile是what?
Podfile
是CocoaPods
的配置文件,用来描述Xcode
工程和第三方库之间的关系。通过编写Podfile
,可以配置Xcode
工程中的哪个target
需要哪些第三方库。然后通过pod install
命令一键安装,就可以在Xcode
工程中使用这些第三方库了。
-
Podfile的创建
Podfile
可以自己手动新建一个命名为Podfile
的文件,也可以通过命令行pod init
创建。
使用命令行时,如果目录中存在多个工程文件.xcodeproj
,则需要指定.xcodeproj
的名字,如:pod init MyApp.xcodeproj
。如果当前目录中只存在一个工程文件.xcodeproj
,那么可以不指定.xcodeproj
。执行pod init
后会自动在当前目录中创建Podfile
,并且会根据.xcodeproj
中定义的target
初始化Podfile
。
使用命令行自动创建的Podfile
内容如下:
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'MyApp' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for MyApp
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
乍看之下, 好像东西挺多,那么我们来精简一下:
target 'MyApp' #标识目标target
pod 'AFNetworking' #引入要引用的第三方库,这里以AFNetworking为例
艾玛,就剩两行了,so easy~!
-
Podfile编辑
如果只有一个target
,需要不断的引用一些开源的第三方库来帮助开发,可以很简单,就像上面精简后的Podfile
一样,只需要不断的添加库就可以。但 随着业务的开展,可能上面这么精简的方式已经不能满足需求,需要对Podfile
进行更加复杂的编写。
#可以设置工程支持的平台信息和最低版本
platform :ios, '7.0' #表示指定将下面的库编译为iOS平台,7.0及以上版本
#默认pod install后会自动生成与project同名的workspace,但也可以指定自己想要生成的workspace的名字
workspace 'MyAppWorkspace'
#设置pod使用framework而不是static libraries。但是这种情况下pod编译出来的framework是动态库形式的。对于使用影响不确定
use_frameworks!
target 'MyApp' do
#当目录中有多个工程文件时,需要指定工程的名字,'xcodeproj'选项已经废弃,修改为project
project 'MyApp'
#可以指定引用库的版本
# pod 'AFNetworking' #如果不加版本标识,则以最新版本为准
pod 'AFNetworking', '~> 3.0' #~>3.0表示[3.0, 3.x);另外还有'=','>','<'等标识
#可以指定引用库的仓库地址
#pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
#可以指定一个podspec文件,通过podspec文件中设置的内容进行下载
pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec'
#可以使用本地路径,通常用于开发模式,即当需要开发pod库时,创建一个工程作为库的demo,这种方式下pod库是可编辑的
#pod 'AFNetworking', :path => '~/Documents/AFNetworking'
#可以指定一个子库,即一个subspec
pod 'QueryKit/Attribute'
#可以指定库的路径
#可以在target块内部继续添加target,默认会继承外部的引用。如下MyAppTests会自动引入上面的AFNetworking和QueryKit/Attribute库
target 'MyAppTests' do
#如果不需要继承则可以设置标识inherit!,如下标识不继承MyApp的search_paths设置
inherit! :search_paths
end
end
-
根据Podfile下载并配置第三方库
命令行模式cd
到工程目录下,执行pod install
即可。下载完成后打开目录下的workspace即可开始开发了。
-
Pod卸载
pod install
之后,CocoaPods
会自动产生一个pod
的工程,且会对主工程添加一些设置,所以,直接打开主工程会编译失败。当不想依赖pod
或想删除pod
时,需要执行pod deintegrate
,执行后会删除主工程对pod
的依赖,但并不会删除pod
文件。如果想彻底删除pod
,只需要执行完命令后手动删除pod
相关文件即可。
四、总结
目前几乎所有做App开发的都会用到CocoaPods
,对CocoaPods
的基本用法也是轻车熟路,而且对于CocoaPods
的搭建和修改主要在项目的初步开发阶段,了解一些简单的用法就够了。
但是,CocoaPods本身是很强大的,它还可以创建lib库,支持lib库的开发和打包,这些内容将在下篇文章讲解。