_新装:CocoaPods

CocoaPods是一个负责管理iOS项目中第三方开源库的工具。CocoaPods的项目源码

环境安装

检查HomeBrew

检查homebrew版本:brew -v

检查Command Line Tools

检查Command Line Tools是否已安装:xcode-select -p

检查rvm(全称是ruby versioin manager)

检查mac是否安装了rvm,执行的命令如下: rvm -v

使用rvm安装ruby环境

1.检查更新rubyGems,执行的命令如下
检查 sudo gem -v
更新rubyGems的版本指令:gem update --system
2.检查ruby源替换源
检查ruby源
gem sources -l
https://gems.ruby-china.com
移除ruby源,移除的命令如下:
gem sources --remove https://rubygems.org/
替换国内镜像源,.执行命令如下:
gem sources -a https://gems.ruby-china.com/

检查是否安装cocoapods

(sudo表示管理员执行的指令,需要输入密码)
检查mac是否安装了rvm,执行的命令如下: rvm -v
检查rubyGems,执行的命令如下: sudo gem -v
检查ruby,执行的命令如下: ruby -v
检查cocoapods,执行的命令如下: pod --version

安装cocoapods 更新cocoapods

1.安装cocoapods的命令如下:
sudo gem install cocoapods

OS X 10.11以后系统的安装cocoapods 指令:
$ sudo gem install -n /usr/local/bin cocoapods

2.检查cocoapods,执行的命令如下:
pod --version
3.cocoapods集成第三方框架到自己的项目中
1.打开终端,输入cd自己的项目路径
2.生成Podfile文件 pod init,
输入vim podfile 打开podfile文件
(编辑文件 i ; 取消编辑 ESC ; 保存并退出 :wq ;)
3.更新pod库
pod update --verbose --no-repo-update
pod install --verbose --no-repo-update

*** CURRENT SOURCES ***
一、创建** podfile**

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
target 'wheelFactory' do
inhibit_all_warnings!
use_frameworks!
install! 'cocoapods', :deterministic_uuids => false
# --------------------- 三方pods集 -----------------------
# -----网络相关类-----
# 网络请求
pod 'AFNetworking'
# 刷新
pod 'FCXRefresh'
# 下拉刷新
pod 'MJRefresh'
# 模型转换
pod 'MJExtension'
# HUD
pod 'MBProgressHUD'
# -----UI相关类-----
# 图片加载
pod 'SDWebImage', '~>5.0'
# UI适配
pod 'Masonry'
# Banner轮播
pod 'SDCycleScrollView'
# 照片
pod 'TZImagePickerController'
# -----功能相关类-----
# Bug
pod 'Bugly', '~> 2.5.0'
# 容错拦截
pod 'AvoidCrash', '~> 2.5.2'
pod 'FMDB', '~> 2.7.5'
# ------------------------ end --------------------------
end

pod install
会去检查podfile.lock是否已经包含该库,如果包含则继续判断是否指定版本, 如果指定版本就去检查podfile.lock中保存的版本是否与新指定的相同,相同则跳过,不相同则更新,如果没有指定版本则不检查更新直接跳过,如果不包含该库则去下载该库并将版本保存在podfile.lock文件中。

pod update
这个命令会忽略Podfile.lock中的记录,直接去找符合Podfile文件中的该依赖库的约束版本(无约束的话就是最新版本)。一般在你想要更新pods到一个新的版本的时候使用。当运行pod update PODNAME 时,CocoaPods将尝试查找PODNAME的更新版本,而不考虑Podfile.lock中列出的版本。 它会将pod更新为可能的最新版本(只要它与Podfile中的版本限制相匹配)。

如果有人执行了pod update, 此时他的Podfile.lock文件中的跟踪版本就已经变更,此时,其他人只要pod install就能更新为和Podfile.lock文件中的版本。

使用CocoaPods

使用cocoaPods搜索第三方库。
pod search AFNetworking

版本号的规则:
    '>1.0'    可以安装任何高于1.0的版本
    '>=1.0'   可以安装任何高于或等于1.0的版本
    '<1.0'    任何低于1.0的版本
    '<=1.0'   任何低于或等于1.0的版本
    '~>0.1'   任何高于或等于0.1的版本,但是不包含高于1.0的版本
    '~>0'     任何版本,相当于不指定版本,默认采用最新版本号

1. source
     * 指定 specs 的位置,自定义添加自己的 podspec。
     * 如果没有自定义添加 podspec,则可以不添加这一项,因为默认使用 CocoaPods 官方的 source。一旦指定了其它 source,那么就必须指定官方的 source,如上例所示。

 2. platform :iOS, '8.0'
     * 指定了开源库应该被编译在哪个平台以及平台的最低版本。
     * 如果不指定平台版本,官方文档里写明各平台默认值为 iOS:4.3,OS X:10.6,tvOS:9.0,watchOS:2.0。

 3. use_frameworks!
     使用 frameworks 动态库替换静态库链接
     * Swift 项目 CocoaPods 默认 use_frameworks!
     * OC 项目 CocoaPods 默认 #use_frameworks!

 4. inhibit_all_warnings!
     * 屏蔽 CocoaPods 库里面的所有警告
     * 这个特性也能在子 target 里面定义,如果你想单独屏蔽某 pod 里面的警告也是可以的,例如:
         `pod 'JYCarousel', :inhibit_warnings => true`

 5. workspace
     * 指定包含所有 projects 的 Xcode workspace
     * 如果没有指定 workspace,并且在 Podfile 所在目录下只有一个 project,那么 project 的名称会被用作 workspace 的名称

 6. target ‘xxxx’ do ... end
     * 指定特定 target 的依赖库
     * 可以嵌套子 target 的依赖库
 
 7. project
     * 默认情况下是没有指定的,当没有指定时,会使用 Podfile 目录下与 target 同名的工程
     * 如果指定了 project,如上例所示,则 CocoaPodsTest 这个 target 只有在 CocoaPodsTest 工程中才会链接

 8. inherit! :search_paths
     * 明确指定继承于父层的所有 pod,默认就是继承的

 9. 依赖库的基本写法
     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 的版本
     pod 'AFNetworking', '~> 0.1' --> 使用大于等于 0.1 但小于 1.0 的版本
     pod 'AFNetworking', '~> 0' --> 高于 0 的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

Podfile.lock文件记录了Podfile的版本,Podfile.lock 应该加入到版本控制里面,不应该把这个文件加入到 ignores 中。因为 Podfile.lock 会锁定当前各依赖库的版本,之后如果多次执行 pod install 不会更改版本,执行 pod update 时才会更改 Podfile.lock。

http://www.srcmini.com/3965.html
https://gems.ruby-china.com
iOS开发之 -- CocoPods的安装和使用
CocoaPods补充: pod search 搜索类库失败的解决办法
https://www.cnblogs.com/striveLD/p/5773280.html
CocoaPods的安装
http://www.code4app.com/article/cocoapods-install-usage


遇到问题:


1、fatal: unable to access 'https://github.com/banchichen/TZImagePickerController.git/': Failed to connect to github.com port 443: Operation timed out 添加pod三方库,请求超时。
2、Mac安装homebrew报错curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation timed out

~ 如何查看 cocoapods 导入的三方库是哪个版本
将 Podfile.lock 文件的后缀名改为 ".txt",就可以查看所有第三方库的版本了。

~ CocoaPods 详解
https://www.cnblogs.com/feng9exe/p/14709358.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容