ios cocopods 安装使用及高级教程

CocoaPods简介

每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm。随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫做:CocoaPodshttp://cocoapods.org/

一、安装

1.更新gem

如果终端gem版本太老可能会有问题,先更新gem:(现在大部分新机都不会有这个问题) 

  sudo gem update --system

2.换源

gem默认的源是外国的https://rubygems.org/,国内网速太慢,换成淘宝源

  gem sources -l                         // 查看当前源

  gem sources --remove https://rubygems.org/    // 删除原有的rubygems

  gem sources -a https://ruby.taobao.org/ // 添加淘宝源

  gem sources -l // 再次查看当前源有没有替换成功

3.选中xcode

如果安装有多个版本xcode的朋友,需要切换一个默认的版本

  sudo xcode-select --switch /Applications/Xcode.app

4.安装cocoapods

mac系统版本如果是10.11以前的,使用一下命令安装:

sudo gem install cocoapods

如果是10.11以后由于cocoapods的命令路径改变了,变成:

sudo gem install -n /usr/local/bin cocoapods

5.初始化cocopods

安装好cocopods以后,需要下载更新本地的依赖库tree,每天很多人都会更新或创建好的Pods库,需要下载或更新到本地,由于依赖库tree数量太多,可能会很慢,耐心等待,中间可能出现各种莫名其妙的错误,很大一部分是网络原因,请重新执行命令

pod setup

二、项目集成cocopods

1.进入到项目的根目录,创建Podfile文件,

cd  ***/IOSHelloWorldProject        // 进入项目根目录

touch Podfile                              // 创建Podfile文件

2.用记事本或xcode打开Podfile文件,添加项目所需要的依赖库,例如:

platform :ios, ‘8.0‘
inhibit_all_warnings!

pod ‘AFNetworking‘

pod ‘SDWebImage‘

这样一个AFNetworking、SDWebImage的依赖库就添加完成了

3.安装依赖库,返回终端执行:

pod install --no-repo-update

4.安装完成以后我们不在打开后缀为.xcodeproj的工程,而是打开后缀为.xcworkspace的工作空间。

此时一个简单的cocopods工程就完成了,相信可以满足大部分小朋友的需求了,对于项目比较复杂、架构设计要求高、个性化追求高的小朋友请接着看cocopods的高级教程

5.cocopods升级

pod --version   // 查看cocopods当前的版本

gem update cocoapod // 升级cocopods命令

6.cocopods卸载

电脑重装或者切换到某个账号后cocopods使用有问题或者cocopods出现解决不了的问题而必须卸载重装,下面就是卸载了:

which pod // 查看pod的安装路径

gem list --local | grep cocoapods   // 查看当前安装了哪些有关cocopods的东西

xiaomingdeMacBook-Pro:OCServiceDemo xiaoming$ gem list --local | grep cocoapods
cocoapods (1.1.1)
cocoapods-core (1.1.1)
cocoapods-deintegrate (1.0.1, 1.0.0.beta.1)
cocoapods-downloader (1.1.2, 1.1.1, 1.0.0.beta.3, 0.9.3)
cocoapods-plugins (1.0.0, 1.0.0.beta.1, 0.4.2)
cocoapods-search (1.0.0, 1.0.0.beta.2, 0.1.0)
cocoapods-stats (1.0.0, 1.0.0.beta.4, 0.6.2)
cocoapods-trunk (1.1.1, 1.0.0, 1.0.0.beta.3, 0.6.4)
cocoapods-try (1.1.0, 1.0.0.beta.3, 0.5.1)

接下来一个一个卸载:

sudo gem uninstall cocoapods-core

sudo gem uninstall cocoapods-deintegrate

如果需要卸载那个版本,如下:

sudo gem uninstall cocoapods -v 1.1.1 //后面的版本号要和上面列表中的版本号对应

二、cocopods高级教程

1.类似pod ‘AFNetworking‘依赖库名如何得来,使用pod的搜索命令:

pod search AFNetworking

xiaomingMacBook-Pro:OCServiceDemo xiaoming$ pod search AFNetworking
-> AFNetworking (3.1.0)   A delightful iOS and OS X networking framework.   pod ‘AFNetworking‘, ‘~> 3.1.0‘   - Homepage: https://github.com/AFNetworking/AFNetworking   - Source:   https://github.com/AFNetworking/AFNetworking.git   - Versions: 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0-beta.3, 3.0.0-beta.2, 3.0.0-beta.1, 2.6.3, 2.6.2, 2.6.1, 2.6.0, 2.5.4, 2.5.3, 2.5.2,   2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1,   1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2, 1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1   [master repo]   - Subspecs:     - AFNetworking/Serialization (3.1.0)     - AFNetworking/Security (3.1.0)     - AFNetworking/Reachability (3.1.0)     - AFNetworking/NSURLSession (3.1.0)     - AFNetworking/UIKit (3.1.0)
-> AFNetworking+AutoRetry (0.0.5)
   Auto Retries for AFNetworking requests
   pod ‘AFNetworking+AutoRetry‘, ‘~> 0.0.5‘
   - Homepage: https://github.com/shaioz/AFNetworking-AutoRetry
   - Source:   https://github.com/shaioz/AFNetworking-AutoRetry.git
   - Versions: 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1 [master repo]

-> AFNetworking+Ext (1.2.1)
   AFNetworking的封装, 并提供一个 UIImageView+DYLoading  cache in fileSystem+memory
   pod ‘AFNetworking+Ext‘, ‘~> 1.2.1‘
   - Homepage: https://github.com/junhaiyang/AFNetworkingExt
   - Source:   https://github.com/junhaiyang/AFNetworkingExt.git
   - Versions: 1.2.1, 1.2, 1.1, 1.0, 0.5, 0.4, 0.3 [master repo]
   - Subspecs:
     - AFNetworking+Ext/Base (1.2.1)
     - AFNetworking+Ext/AFCustomRequestOperation (1.2.1)
     - AFNetworking+Ext/AFDownloadRequestOperation (1.2.1)
     - AFNetworking+Ext/AFTextResponseSerializer (1.2.1)
     - AFNetworking+Ext/example (1.2.1)
     - AFNetworking+Ext/UIKit (1.2.1)
     - AFNetworking+Ext/UIKit/UIImageView+DYLoading (1.2.1)

:

解释下内容:

-> AFNetworking (3.1.0)        // 依赖库名、最新版本号
   A delightful iOS and OS X networking framework.    // 简介描述
   pod ‘AFNetworking‘, ‘~> 3.1.0‘                             // 在Podfile文件里引用这个依赖库的语法,大部分情况下拷贝这行到Podfile文件即可
   - Homepage: https://github.com/AFNetworking/AFNetworking   // 依赖库的主页,主页里包含介绍、说明、源码等一系列文件
   - Source:   https://github.com/AFNetworking/AFNetworking.git   // 依赖库的git仓库路径
   - Versions: 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0-beta.3, 3.0.0-beta.2, 3.0.0-beta.1, 2.6.3, 2.6.2, 2.6.1, 2.6.0, 2.5.4, 2.5.3, 2.5.2,
   2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1,
   1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2, 1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1    // 依赖库的各个版本
   [master repo]
   - Subspecs:   // 这里的是依赖库的各个子模块,一般不用关心,研究依赖库源码框架的可以看看
     - AFNetworking/Serialization (3.1.0)
     - AFNetworking/Security (3.1.0)
     - AFNetworking/Reachability (3.1.0)
     - AFNetworking/NSURLSession (3.1.0)
     - AFNetworking/UIKit (3.1.0)

在Podfile文件使用如下语法引用依赖库:

pod ‘AFNetworking‘      //不显式指定依赖库版本,表示每次都获取最新版本
pod ‘AFNetworking‘, ‘2.0‘     //只使用2.0版本
pod ‘AFNetworking‘, ‘> 2.0‘     //使用高于2.0的版本
pod ‘AFNetworking‘, ‘>= 2.0‘     //使用大于或等于2.0的版本
pod ‘AFNetworking‘, ‘< 2.0‘     //使用小于2.0的版本
pod ‘AFNetworking‘, ‘<= 2.0‘     //使用小于或等于2.0的版本
pod ‘AFNetworking‘, ‘~> 0.1.2‘     //使用大于等于0.1.2但小于0.2的版本,不包含0.1.2
pod ‘AFNetworking‘, ‘~>0.1‘     //使用大于等于0.1但小于1.0的版本
pod ‘AFNetworking‘, ‘~>0‘     //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

2.多个target使用相同Pod依赖库

如果为IOSHelloWorldProject的targetOne和targetTwo都需要引用Reachability、SBJson、AFNetworking三个Pods依赖库,可以使用link_with关键字来实现,将Podfile写成如下方式:

    link_with ‘targetOne‘, ‘targetTwo‘
      pod ‘Reachability‘,  ‘~> 3.0.0‘
      pod ‘SBJson‘, ‘~> 4.0.0‘
      pod ‘AFNetworking‘, ‘~> 2.0‘

新的语法是使用abstract_target

# There are no targets called "Shows" in any Xcode projects
abstract_target ‘Shows‘ do
  pod ‘ShowsKit‘
  # Has its own copy of ShowsKit + ShowWebAuth
  target ‘ShowsiOS‘ do
    pod ‘ShowWebAuth‘
  end

  # Has its own copy of ShowsKit + ShowTVAuth
  target ‘ShowsTV‘ do
    pod ‘ShowTVAuth‘
  end
end

如果使用隐式abstract_target语法必须写在Podfile文件顶部:

pod ‘ShowsKit‘
# Has its own copy of ShowsKit + ShowWebAuth
target ‘ShowsiOS‘ do
  pod ‘ShowWebAuth‘
end

# Has its own copy of ShowsKit + ShowTVAuth
target ‘ShowsTV‘ do
  pod ‘ShowTVAuth‘
end

3.不同target引用不同Pod依赖

如果为IOSHelloWorldProject的targetOne引用Reachability,而targetTow引用SBJson、AFNetworking,将Podfile写成如下方式:

target :‘targetOne‘ do
      pod ‘Reachability‘,  ‘~> 3.0.0‘
  end

    target :‘targetTow‘ do     pod ‘AFNetworking‘, ‘~> 2.0‘     pod ‘SBJson‘, ‘~> 4.0.0‘  end

do/end作为开始和结束标识符

4.其他常用pod引用依赖库语法

pod ‘Alamofire‘, :path => ‘~/Documents/Alamofire‘      // 在~/Documents/Alamofire路径下存在spec的项目(spec后期介绍)
pod ‘Alamofire‘, :git => ‘https://github.com/Alamofire/Alamofire.git‘  // git上的master分支
pod ‘Alamofire‘, :git => ‘https://github.com/Alamofire/Alamofire.git‘, :tag => ‘3.1.1‘  // git上tag为3.1.1
pod ‘Alamofire‘, :git => ‘https://github.com/Alamofire/Alamofire.git‘, :commit => ‘0f506b1c45‘  // git上commit为0f506b1c45
pod ‘Alamofire‘, :git => ‘https://github.com/Alamofire/Alamofire.git‘, :branch => ‘dev‘      // git上的开发分支

更多Podfile语法请参考官网:https://guides.cocoapods.org/syntax/podfile.html#podfile

5.关于Podfile.lock文件

在使用CocoaPods,执行完pod install之后,会生成一个Podfile.lock文件。这个文件看起来跟我们关系不大,实际上绝对不应该忽略它。

该文件用于保存已经安装的Pods依赖库的版本

Podfile.lock文件最大得用处在于多人开发。当团队中的某个人执行完pod install命令后,生成的Podfile.lock文件就记录下了当时最新Pods依赖库的版本,这时团队中的其它人check下来这份包含Podfile.lock文件的工程以后,再去执行pod install命令时,获取下来的Pods依赖库的版本就和最开始用户获取到的版本一致。如果没有Podfile.lock文件,后续所有用户执行pod install命令都会获取最新版本的SBJson,这就有可能造成同一个团队使用的依赖库版本不一致,这对团队协作来说绝对是个灾难!

在这种情况下,如果团队想使用当前最新版本的SBJson依赖库,有两种方案:

  1. 更改Podfile,使其指向最新版本的SBJson依赖库;
  2. 执行pod update命令;

鉴于Podfile.lock文件对团队协作如此重要,我们需要将它添加到版本管理中

5.查看本地依赖库的tree文件

cocopods的tree文件默认是隐藏的,先把Mac隐藏文件夹显示出来,Mac隐藏和显示的命令如下:

隐藏:defaults write com.apple.finder AppleShowAllFiles -bool true

显示:defaults write com.apple.finder AppleShowAllFiles -bool false

然后退出终端,重启Finder

cocopods的tree文件的默认路劲是

~/.cocoapods/repos/master/Specs  // 当前用户的.cocoapods/repos/master/Specs目录下

直接使用命令如下命令打开路劲即可:

open ~/.cocoapods/repos/master/Specs

时间: 2024-10-05 04:19:38

ios cocopods 安装使用及高级教程的相关文章

计算机网络高级教程考点个人总结

计算机网络高级教程 选择题 50~60分 论述题:40~50分 个人总结仅供参考 论述题范围 1.  google公司,IBM公司.微软公司.苹果公司.华为公司.百度公司的技术发展方向. 2.5G的特点及其产业应用. 3.智慧城市的应用探索. 4.机器人技术与应用探索. Google公司市值6819.40亿美元,IBM市值1450亿美元,苹果8000亿美元,微软5400亿美元,阿里3632.63亿美元,腾讯3462亿美元,京东600亿美元,百度600亿美元,华为没有上市,没有市值. 选择题范围

[转] Xcode4.4.1下安装高德地图详细教程

转载地址:http://blog.csdn.net/mad1989/article/details/7913404 此教程和官方的没有太大区别,省略了好多没用的步骤,添加framework的方式是最新的,其它没有太大变化. 1,创建一个Single view Application,相信这个大家都懂的吧. 2,引入高德地图iOS API 地图开发库和头文件(lib和include).(高德API下载地址可搜索baidu) (将解压出的高德API中的include和lib文件夹都复制到项目的文件夹

Python学习 1 一 Python2.75的安装及环境配置教程

Python2.75的安装及环境配置教程 Python的语法简洁,功能强大,有大量的第三方开发包(模块),非常适合初学者上手.同时Python不像java一样对内存要求非常高,适合做一些经常性的任务方面的编程.根据codeeval网站数据统计显示,连续三年,Python保持着其在编程语言中的领先地位.而且Python-Django开发web也是一种时尚. Python 2.75 安装文件 win8或win8.1 首先下载一个Python的应用程序,网上有很多的.此处给出官网的下载地址:https

干货!总结19个提升iOS开发技术的必看教程!

又到了ibnShawari一周一篇技术推送的时间了,今天我为大家带来了iOS开发篇,绝对实用,绝对简单!!! 注意!!本课程采用了一种系统且全面的方式学习:赶快来学习,体验这种方法的魔力吧!! 干货!总结19个提升iOS开发技术的必看教程!        本系列教程采用了最新的IOS开发技术进行讲解,视频中所有的例子都在最新的编译器中调试通过.理论上所有的例子都可以在成功运行.本路线图提供的视频课程是全网最深入,最全.通过对本路线图的学习,学员可以充分掌握IOS的开发过程,并具有一定的项目实战经

Centos安装L2TP+IPSec完整教程

Centos安装L2TP+IPSec完整教程 L2TP相比PPTP是另外一种隧道协议方式,部分网络下PPTP无法连接,可以尝试L2TP,一般而言在PC上,两者使用体验没什么不同,技术原理上的不同请参照这里. 建议PC电脑上优先使用PPTP,无法使用可以尝试L2TP,移动端推荐使用L2TP: 安装方式: 一.一键脚本安装(推荐,安装简单) 安装的软件包版本分别是openswan-2.6.38.xl2tpd-1.2.4 VPS是需要基于Xen或KVM的. 注意:基于 OpenVZ 虚拟化技术的 VP

Swift版iOS游戏框架Sprite Kit基础教程下册

Swift版iOS游戏框架Sprite Kit基础教程下册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C 介绍:本教程是国内唯一的Swift版的Spritekit教程.本教程基于Xcode 6.1+iOS 8.1开发环境,采用Swift语言,详细讲解Sprite Kit游戏开发的各种知识,帮助读者尽快iOS游戏开发的技能. 目录 第7章  音频和视频 1 7.1  背景音乐 1 7.1.1  添加背景音乐 1 7.1.2  控制背景音乐 5 7.1.3  设置音乐

iOS 9音频应用开发基础教程

iOS 9音频应用开发基础教程(大学霸内部资料) 介绍:iOS 9音频应用开发基础教程(内部资料)是iOS 9音频应用开发专向教程.本书采用Swift 2.0语言开发基于iOS 9的音频应用.实现的功能不仅包括音频播放和录音等基本功能,还包括播放列表.歌词功能.流媒体音乐.均衡器.可视化效果.文本朗读等高级功能. 学习建议:学习本教程内容,需要掌握Swift语言基础和iOS开发基础.如果不具备这两方面,建议用户阅读本店的以下教程: Swift语言快速入门 iOS 9应用开发基础教程 试读文档下载

iOS游戏框架Sprite Kit基础教程——Swift版上册

iOS游戏框架Sprite Kit基础教程--Swift版上册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C  介绍:本教程是国内唯一的Swift版的Spritekit教程.本教程基于Xcode 6.1+iOS 8.1开发环境,采用Swift语言,详细讲解Sprite Kit游戏开发的各种知识,帮助读者尽快iOS游戏开发的技能. 目录 目  录 第1章  编写第一个Sprite Kit程序 1 1.1  Sprite Kit介绍 1 1.1.1  什么是Sprit

HTML高级教程(11)——HTML 网页服务器

准备好发布你的作品了吗? 第一步:个人 WEB 服务器(PWS) 如果你希望其他人访问你的页面,就必须发布它们. 要发布你的作品,你就要将你的文件拷贝到 WEB 服务器. 你自己的 PC 也可以作为 WEB 服务器使用,不过前提是它必须接入互联网. 如果使用的是 Windows 98,你可以用 PWS (Personal Web Server). 你可以在 Windows 的安装 CD 的 PWS 文件夹中找到 PWS. Personal Web Server (PWS) PWS 可以将任何视窗