程序员人生 网站导航

iOS开发~CocoaPods使用详细说明

栏目:综合技术时间:2016-08-26 09:04:21

1、概要

iOS开发时,项目中会援用许多第3方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统1管理这些第3方库(从1个坑出来,又进了另外一个坑而已……)。


2、安装

由于网上的教程基本都大同小异,但细节的地方还不是很完善,所以借机会在这里补充下:

注:要使用CocoaPods,那就要下载安装它,而下载安装CocoaPods需要Ruby环境


1、Ruby环境搭建

当前安装环境为Mac mini 10.8.5。Mac  OS本身自带Ruby,但还是更新1下保险,由于我第1次安装在没有更新Ruby的情况下就失败了。

a 查看下当前ruby版本:打开终端输入 ruby -v(确切安装了,不过用这个版本接下来工作失败了,所以更新下ruby)

[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. ritekiMac-mini:PodTest lucky$ ruby -v  
  2. ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]  
  3. ritekiMac-mini:PodTest lucky$   

b 更新ruby

终端输入以下命令(把Ruby镜像指向taobao,避免被墙,你晓得

gem sources --remove https://rubygems.org/ 
gem sources -a http://ruby.taobao.org/ 
gem sources -l  (用来检查使用替换镜像位置成功)

[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. ritekiMac-mini:~ lucky$ gem sources --remove https://rubygems.org/  
  2. https://rubygems.org/ removed from sources  
  3. ritekiMac-mini:~ lucky$ gem sources -a http://ruby.taobao.org/  
  4. http://ruby.taobao.org/ added to sources  
  5. ritekiMac-mini:~ lucky$ gem sources -l  
  6. *** CURRENT SOURCES ***  

补充:(2016-01⑵0更新

淘宝已关闭HTTP协议的景象服务,改成HTTPS协议。

淘宝ruby地址:https://ruby.taobao.org/

2、下载安装CocoaPods

终端输入:sudo gem install cocoapods 


[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. ritekiMac-mini:~ lucky$ sudo gem install cocoapods  
  2.   
  3. CHANGELOG:  
  4.   
  5. ## 0.32.1  
  6.   
  7. ##### Bug Fixes  
  8.   
  9. * Fixed the Podfile `default_subspec` attribute in nested subspecs.    
  10.   [Fabio Pelosin][irrationalfab]  
  11.  \ [#2050](https://github.com/CocoaPods/CocoaPods/issues/2050)  
  12.   
  13.   
  14. Successfully installed cocoapods-0.32.1  
  15. Installing ri documentation for cocoapods-0.32.1  
  16. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block  
  17. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block  
  18. Done installing documentation for cocoapods after 10 seconds  
  19. 1 gem installed  


这样就下载安装好了CocoaPods


3、使用CocoaPods

a  新建1个项目,名字PodTest



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

[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. cd /Users/lucky/Desktop/PodTest   

c  建立Podfile(配置文件)

接着上1步,终端输入 vim Podfile



键盘输入 i,进入编辑模式,输入

platform :ios, '7.0' 
pod 'MBProgressHUD', '~> 0.8'


然后按Esc,并且输入“ :”号进入vim命令模式,然后在冒号后边输入wq



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



激动人心的时刻到了:肯定终端cd到项目总目录,然后输入 pod install,等待1会,大约3分钟。



查看项目根目录:



注意:现在打开项目不是点击 PodTest.xodeproj了,而是点击 PodTest.xcworkspace

对工程产生的变化,有几点需要说明:

a、第3方库会以成静态库方式引入工程使用

CocoaPods会将所有的第3方库以target的方式组成1个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。全部第3方库工程会生成1个名称为libPods.a的静态库提供给工程使用。

b、xcworkspace(PodTest.xcworkspace)的作用是管理工程和第3方库

PodTest工程和Pods工程被以workspace的情势组织和管理。


打开项目后看到项目结构并且测试1下:



运行结果:



补充:

1、CocoaPods的基本安装及使用都详细的说明了,但还有1些补充,当需要同时导入多个第3方时候怎样办 ?

这就需要修改Podfile了,就是用vim编辑的那个保存在项目根目录中的文件,修改完了Podfile文件,需要重新履行1次pod install命令。

例如:

platform :ios

pod 'JSONKit',       '~> 1.4'

pod 'AFNetworking',  '~> 2.0'


2、CocoaPods可以查找你想要的第3方库

终端输入命令:pod search UI

疯了了,我怎样查找这么大众的关键字,好多库~~


然后重新编辑Podfile文件,依照之前的步骤,把更多的库都导入项目!

3、上文中“建立Podfile(配置文件)接着上1步,终端输入 vim Podfile”步骤,如果不习惯使用vim编辑器,也能够使用linux命令touch,生成1个空的Podfile文件,然后使用其他的文本编辑器都可以,例如:

[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. lizhongfudeMacBook-Pro:~ lizhongfu$ cd /Users/lizhongfu/Desktop/TestProject   
  2. lizhongfudeMacBook-Pro:TestProject lizhongfu$ touch Podfile  
编辑好Podfile文件后,就能够履行pod install第3方导入了(详见:补充第1条),CocoaPods就开始为我们做下载源码、配置依赖关系、引入需要的framework等1些列工作。

4、如果已生成了CocoaPods管理的工程,则可以在Xcode中编辑Podfile,编辑保存后,别忘记cd到根目录,调用pod install命令

5、项目存在多个Target的时候,需要配置Podfile文件来支持新增加的Target,否则只支持项目默许建立时生成的Target:

a、如果新建1个Target,命名为Second,并且Second与Test两个Target所需要的第3方支持相同,也就是使用相同的Pods依赖库,则可使用

link_with关键字:

[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. link_with 'Test''Second'  
  2. platform :ios  
  3. platform :ios, ‘9.0’    
  4. pod 'AFNetworking''~> 2.0'  

b、如果不同的Target需要不同的依赖库,则可以

[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. platform :ios  
  2. target :'Test' do  
  3. pod 'Reachability'  
  4. pod 'SBJson'     
  5. pod 'AFNetworking'   
  6. end    
  7.     
  8. target :'Second' do  
  9. pod 'OpenUDID'   
  10. end  


6、出现/Library/Ruby/Gems/2.0.0/gems/claide-0.8.1/lib/claide/command.rb:417:in `help!': [!] You cannot run CocoaPods as root. (CLAide::Help)

重新打开1个终端,然后pod install,不要sudo pod install。

7、如果$ pod install时候遇到:

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐