CocoaPods的安装使用以及相关问题

每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm。随着 iOS 开发者的增多,业界也出现了为 iOS 程序提供依赖管理的工具,它的名字叫做:CocoaPods。CocoaPods项目的源码 在 Github 上管理。该项目开始于 2011 年 8 月 12 日,经过多年发展,现在已经成为 iOS 开发事实上的依赖管理标准工具。开发 iOS 项目不可避免地要使用第三方开源库,CocoaPods 的出现使得节省设置和更新第三方开源库的时间

使用CocoaPods
在使用 CocoaPods之前,开发项目需要用到第三方开源库的时候,需要
1.把开源库的源代码复制到项目中
2.添加一些依赖框架和动态库
3.设置-ObjC,-fno-objc-arc等参数
4.管理他们的更新
在使用CocoaPods后,我们只需要把用到的开源库放到一个名为Podfile的文件中,然后执行pod install就可以了,Cocoapods就会自动将这些第三方开源库的源码下载下来,并且为我们的工程设置好响应的系统依赖和编译参数

CocoaPods原理
CocoaPods原理是将所有的依赖库都放到另一个名为 Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到 Pods项目中。Pods项目最终会编译成一个名为 libPods.a的文件,主项目只需要依赖这个.a文件即可

CocoaPods的安装
1> ruby 的软件源 rubygems.org因为使用亚马逊的云服务,被屏蔽,需要更新一下ruby的源,执行如下指令
gem sources --remove https://rubygems.org/ // 移除当前ruby的源
gem sources -l // 再次查看当前ruby的源
如果Terminal输出:

*** CURRENT SOURCES ***

https://ruby.taobao.org/
就证明ruby的软件源已经设置OK了

2> 设置gem为最新版本
如果gem太老,可以尝试用如下命令升级gem
$ sudo gem update —system
升级成功后会提示: Latest version currently installed. Aborting.

3> 执行安装 CocoaPods 命令
OS X 10.11 升级,虽然官方声称只是一个小的升级,但对于开发者而言,cocoapods需要重新安装,但按照以前的安装方式,在Terminal输入以下命令
$ sudo gem install cocoapods

如果报以下错误:
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/xcodeproj
解决方案1:
sudo reboot
重启之后, 执行这个命令检查
$ sudo gem install cocoapods -V
如果依旧有错误,使用第二个方案

解决方案2:
pod setup
下载时间两个多小时,才完成

注 : pod setup 在执行时,会输出 Setting up CocoaPods master repo,但是会等待比较久的时间。这步其实是 Cocoapods 在将它的信息下载到 ~/.cocoapods目录下,如果你等太久,可以试着 cd 到那个目录,用du -sh *来查看下载进度 cd ~/.cocoapods
$ du -sh *

4> Cocoapods的使用
在 工程根目录 的统计目录下创建一个 Podfile 文件

注 : 不能写成别的名字,也可以自己在工程根目录里面直接新建

Podfile 文件的格式内容一般如下 :
platform :ios, '7.0'

project 'Test1/Test1.xcodeproj'

target 'Test1' do
pod 'AFNetworking', '~> 2.5.3'
end

cd 进入到 Podfile 文件所在的目录中,执行指令
pod install 注 : 1> pod install 指令执行完成之后会生成 xcworkspace 文件,以后使用.xcworkspace文件来打开工程,而不是使用以前的.xcodeproj文件 2> 每次更改了Podfile文件,都需要重新执行一次 pod update 命令

5> 查找第三方库
如果不知道 cocoaPods 管理的库中,是否有你想要的库,那么可以通过 pod search 命令进行查找,如 :
$ pod search AFNetworking

6> 关于 Podfile.lock
当执行 pod install 之后,除了 Podfile 外,CocoaPods 还会生成一个名为Podfile.lock的文件,Podfile.lock 应该加入到版本控制里面,不应该把这个文件加入到 .gitignore 中。因为 Podfile.lock会锁定当前各依赖库的版本,之后如果多次执行 pod install 不会更改版本,要 pod update 才会改Podfile.lock了。这样多人协作的时候,可以防止第三方库升级时造成大家各自的第三方库版本不一致

常见问题
1> The dependency AFNetworking is not used in any concrete target

库没有指定target,它不知道用在哪里,所以就给报错,添加 target 相关信息就可以

2> [!] Could not automatically select an Xcode project. Specify one in your Podfile like so:
project 'path/to/Project.xcodeproj'
在Podfile文件里指定下工程目录就行,如 :
......
xcodeproj 'Portfolio/Portfolio.xcodeproj'
......

3> [!] xcodeproj was renamed to project. Please update your Podfile accordingly.

查看 Podfile 文件,若有类似 xcodeproj 'MyProj/MyProj.xcodeproj' 这样的信息,替换成 project 'MyProj/MyProj.xcodeproj'

4> Unable to find a specification for xxxxx (~> 1.x.x) depended upon by Podfile.
当在 update或 install时会遇到这个问题,只需要把当前Pod的目录清理一下就行执行如下指令
pod setup
setup 成功后执行 install或 update即可

5> [!] Unable to find a pod with name, author, summary, or description matching AFNetworking

执行
pod search AFNetworking

你可能感兴趣的:(CocoaPods的安装使用以及相关问题)