您的位置:首页 > 移动开发 > IOS开发

IOS-CocoaPods的详细安装与使用

2017-08-06 17:26 447 查看
IOS-CocoaPods的详细安装与使用

 

1.为什么需要CocoaPods
在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson、AFNetworking、Reachability等等。使用这些库的时候通常需要:
下载开源库的源代码并引入工程
向工程中添加开源库使用到的framework
解决开源库和开源库以及开源库和工程之间的依赖关系、检查重复添加的framework等问题
如果开源库有更新的时候,还需要将工程中使用的开源库删除,重新执行前面的三个步骤,顿时头都大了。。。
自从有了CocoaPods以后,这些繁杂的工作就不再需要我们亲力亲为了,只需要我们做好少量的配置工作,CocoaPods会为我们做好一切!
 
2.什么是CocoaPods
CocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。
使用CocoaPods的目的是让我们能自动化的、集中的、直观的管理第三方开源库。
 
3.核心组件
CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本。
Cocoapods意义体现在两个方面。第一,在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是ARC环境下的-fno-objc-arc配置等。第二,使用CocoaPods可以很方便地查找新的第三方库,这些类库是比较“标准的”,而不是网上随便找到的,这样可以让我们找到真正好用的类库。
接下来我们将介绍CocoaPods的使用。
CocoaPods的核心组件
CocoaPods是用Ruby写的,并划分成了若干个Gem包。
 
CocoaPods在解析执行过程中最重要的几个包的路径分别是:CocoaPods/CocoaPods、 CocoaPods/Core和 CocoaPods/Xcodeproj。 
CocoaPods / CocoaPod:这是面向用户的组件,每当执行一个pod命令时,这个组件将被激活。它包括了所有实用CocoaPods的功能,并且还能调用其他gem包来执行任务。 
CocoaPods / Core:Core gem提供了与CocoaPods相关的文件(主要是podfile和podspecs)的处理。 
Podfile:该文件用于配置项目所需要的第三方库,它可以被高度定制。本文中我们主要在这里做动作。
Podspec:该文件描述了一个库将怎样被添加进工程中。.podspec文件可以标识该第三方库所需要的源码文件、依赖库、编译选项,以及其他第三方库需要的配置。 
CocoaPods / Xcodeproj:这个包负责处理工程文件,它能创建以及修改.xcodeproj文件和.xcworkspace文件。它也可以作为一个独立的包使用,当你要编写修改项目文件的脚本时,可以考虑使用CocoaPods/Xcodeproj。
 
二、安装
由于网上的教程基本都大同小异,但细节之处还不是很完善,所以借机会在这里补充下:
注:要使用CocoaPods,那就要下载安装它,而下载安装CocoaPods需要Ruby环境
 
1、Ruby环境搭建
当前安装环境为Mac mini 10.8.5。Mac  OS本身自带Ruby,但还是更新一下保险,因为我第一次安装在没有更新Ruby的情况下就失败了。
a 查看下当前ruby版本:打开终端输入 ruby -v(确实安装了,不过用这个版本接下来工作失败了,所以更新下ruby)
 

ritekiMac-mini:PodTest lucky$ ruby -v  

ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]  

ritekiMac-mini:PodTest lucky$   

b 更新ruby
 
终端输入如下命令(把Ruby镜像指向taobao,避免被墙,你懂得)
gem sources --remove https://rubygems.org/ 
gem sources -a https://ruby.taobao.org/ 
gem sources -l  (用来检查使用替换镜像位置成功)
 

ritekiMac-mini:~ lucky$ gem sources --remove https://rubygems.org/  
https://rubygems.org/ removed from sources  
ritekiMac-mini:~ lucky$ gem sources -a https://ruby.taobao.org/  
https://ruby.taobao.org/ added to sources  
ritekiMac-mini:~ lucky$ gem sources -l  

*** CURRENT SOURCES ***  

 
2、下载安装CocoaPods
终端输入:sudo gem install cocoapods 
 

ritekiMac-mini:~ lucky$ sudo gem install cocoapods  

  

CHANGELOG:  

  

## 0.32.1  

  

##### Bug Fixes  

  

* Fixed the Podfile `default_subspec` attribute in nested subspecs.    

  [Fabio Pelosin][irrationalfab]  

 \ [#2050](https://github.com/CocoaPods/CocoaPods/issues/2050)  

  

  

Successfully installed cocoapods-0.32.1  

Installing ri documentation for cocoapods-0.32.1  

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block  

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block  

Done installing documentation for cocoapods after 10 seconds  

1 gem installed  

 
这样就下载安装好了CocoaPods
 
3、使用CocoaPods
a  新建一个项目,名字PodTest



 
b  终端中,cd到项目总目录(注意:包含PodTest文件夹、PodTest.xcodeproj、PodTestTest的那个总目录)
 

cd /Users/lucky/Desktop/PodTest   

c  建立Podfile(配置文件)
 
接着上一步,终端输入 vim Podfile



 
键盘输入 i,进入编辑模式,输入
platform :ios, '7.0' 

pod 'MBProgressHUD', '~> 0.8'
 
然后按Esc,并且输入“ :”号进入vim命令模式,然后在冒号后边输入wq



 
注意:键盘输入 :后,才能输入wq。回车后发现PodTest项目总目录中多一个Podfile文件



 
 
首先进入工程根目录,然后执行pod install命令,CocoaPods就开始为我们做下载源码、配置依赖关系、引入需要的f
c5c7
ramework等一些列工作,命令的执行结果打印出来如下:

 



 
查看项目根目录:



 
注意:现在打开项目不是点击 PodTest.xodeproj了,而是点击 PodTest.xcworkspace
 
对于工程发生的变化,有几点需要说明:
 
第三方库会被编译成静态库供我们正真的工程使用
CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。整个第三方库工程会生成一个名称为libPods.a的静态库提供给我们自己的CocoaPodsTest工程使用。
 
我们的工程和第三方库所在的工程会由一个新生成的workspace管理 
为了方便我们直观的管理工程和第三方库,CocoaPodsTest工程和Pods工程会被以workspace的形式组织和管理,也就是我们刚才看到的CocoaPodsTest.xcworkspace文件。
原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。
 
打开项目后看到项目结构并且测试一下:
在项目中引用刚才添加的第三方库的头文件,执行编译操作,果断成功!



 
运行结果:



 
补充:
1、CocoaPods的基本安装及使用都详细的说明了,但还有一些补充,当需要同时导入多个第三方时候怎么办 ?
这就需要修改Podfile了,就是用vim编辑的那个保存在项目根目录中的文件,修改完了Podfile文件,需要重新执行一次pod install命令。
例如:
 
platform :ios
pod 'JSONKit',       '~> 1.4'
pod 'AFNetworking',  '~> 2.0'
 
2、CocoaPods可以查找你想要的第三方库
终端输入命令:pod search UI
疯了了,我怎么查找这么大众的关键字,好多库~~



然后重新编辑Podfile文件,按照之前的步骤,把更多的库都导入项目!
 
 
 
错误总结 
1.执行"pod install (如果终端出现updating local specs repositories,那么请用ctrl+c强制结束命令进程,然后执行 pod install --verbose --no-repo-update 或者 pod install --no-repo-update"
#pragma mark - 注意如果在pod install之后出现Creating shallow clone of spec repo `master-1` from `https://github.com/CocoaPods/Specs.git`卡死情况,就在执行pod install之前执行pod setup
 
2. 现在,你的所有第三方库都已经下载完成并且设置好了编译参数和依赖,你只需要记住如下 2点即可:
使用 CocoaPods生成的 .xcworkspace文件来打开工程,而不是以前的 .xcodeproj 文件。
每次更改了 Podfile文件,你需要重新执行一次"pod update命令。(如果终端出现updating local specs repositories,那么请用ctrl+c强制结束命令进程,然后执行pod update --verbose --no-repo-update或者pod update --no-repo-update"
 
"pod setup时报错解决办法"
出错:pod setup的时候报错, argumenterror , syntax error on line 4, col 0: `min:0.29.0`
 
解决方法如下:
 
1.命令行运行
# -rf ~/.cocoapods/repos
# pod setup(这个我还是没成功,报错ruby里什么找不到文件,于是我更新ruby,如果你成功了,就不用了)
 
2.更新ruby
xcode->preference->download里安装Command Line Tools
 
安装rvm:命令行里运行
$ curl -L get.rvm.io | bash -s stable
 
等待,运行
$ source ~/.bashrc
$ source ~/.bash_profile
 
查看安装
$ rvm -v
 
升级ruby:
$ rvm install ruby 2.1.1
ruby升级好了,查看版本 $ ruby -v
 
3.我ruby安装又失败了,于是谷歌
Error running 'requirements_osx_port_update_system ruby-2.1.1',
根据一篇文章,我又继续了,命令行里
$ sudo port -v selfupdate
结果有出错了,$ sudo:port:command not faund
于是一番搜索,
$ export PATH=$PATH:/opt/local/bin
$ source .profile
升级macports
$sudo port -v selfupdate
终于可以升级ruby了,
$ rvm install 2.1.1
成功,于是,下一步
$ sudo gem install cocoapods
成功
 
4.重新运行
 
$  pod setup
成功
 
 关注:http://www.jianshu.com/p/dfe970588f95
 
错误总结
使用CocoaPod出现-bash: pod: command not found ”的问题,倘若不想移除一遍已安装的CocoaPods
先运行
 
sudo gem install -n /usr/local/bin cocoapods
不行再运行
sudo chmod +rx /usr/local/bin
 

在项目中移除CocoaPods

如果你觉得CocoaPods让你的项目出现了问题,不好用甚至是恶心,想将其从项目中彻底移除,也有方法:
1.删除工程文件夹下的
Podfile
Podfile.lock
Pods
文件夹。
2.删除
xcworkspace
文件。
3.打开
xcodeproj
文件,删除项目中的
Pods
文件夹及
Pods.xcconfig
引用和
libpods.a


 

4.打开Build Phases选项,删除
Check Pods Manifest.lock
Copy Pods Resources
,以及
Embeded Pods Frameworks


 

5.完成,编译运行,无错通过。

总结

从项目中移除某个类库直接修改" Podfile "文件即可,但是移除整个CocoaPods就有点麻烦了,或许有其他方法。
另外,如果在编辑工程时不小心删除了某个文件,如Podfile.lock,那么我们就要用上面的方法先移除整个CocoaPods,然后重新建立Podfile和使用pod install命令重装CocoaPods。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: