博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS CocoaPods 详解
阅读量:2393 次
发布时间:2019-05-10

本文共 3306 字,大约阅读时间需要 11 分钟。

每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 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 -l    
// 查看当前ruby的源
$ gem sources --remove https://rubygems.org/    
// 移除当前ruby的源
$ gem sources -a https://ruby.taobao.org/    
// 设置淘宝ruby的源
$ gem sources -l    
// 再次查看当前ruby的源
如果Terminal输出:
*** CURRENT SOURCES ***
就证明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 nvram boot-args="rootless=0"
$ sudo reboot
重启之后, 执行这个命令检查
$ sudo gem install cocoapods -V
如果依旧有错误,使用第二个方案
解决方案2:
$ sudo gem install -n /usr/local/bin cocoa pods
$ 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 repo remove master
$ pod setup
setup 成功后执行 install或 update即可
5> [!] Unable to find a pod with name, author, summary, or description matching `AFNetworking`
执行
$ rm ~/Library/Caches/CocoaPods/search_index.json
之后再执行 查询指令
$ pod search AFNetworking
你可能感兴趣的文章
关于@override报错的问题
查看>>
Linux中禁止Ctrl-Alt-Delete
查看>>
概念辨析:dBm, dBi, dBd, dB, dBc, dBuV
查看>>
麻雀虽小,五脏俱全:新新手,IP和Socket小知识
查看>>
Windows常用命令集锦
查看>>
MMS彩信是怎么炼成地(一) 编辑
查看>>
MMS是怎样炼成的(二)封装
查看>>
SMIL 参考手册
查看>>
分析pptpd程序中关于执行pptpd和pppd程序的部分源代码
查看>>
RFC 1180 - TCP/IP tutorial 学习笔记
查看>>
HOWTO: Unpack, Edit, and Re-Pack Boot Images
查看>>
ramfs, rootfs & initramfs
查看>>
Tom's attempts to get GPRS working over bluetooth with his laptop
查看>>
Connecting to GPRS over Bluetooth on Linux
查看>>
Linux网络资源
查看>>
Android对Kernel的改动汇总
查看>>
WGET 通过代理下载
查看>>
JITTER BUFFER
查看>>
IP协议报头学习笔记
查看>>
关于SIGPIPE导致的程序退出
查看>>