CocoaPods

目录

1.原理及说明
2.安装 Ruby 环境
3.安装 CocoaPods
4.使用 CocoaPods
5.补充 - 安装好以后在新的项目中使用
6.使用过程中遇到的各种问题 Bug
7.常用的命令行
8.私有库 Pod

1.原理及说明

原理:
每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm。随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫做:CocoaPods,CocoaPods项目的源码在Github上管理。比如通常情况下,一个网络库就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。对于某些开源库,我还需要设置-licucore或者 -fno-objc-arc等编译参数管理这些依赖包的更新。这些体力活虽然简单,但毫无技术含量并且浪费时间。在使用CocoaPods之后,我只需要将用到的第三方开源库放到一个名为Podfile的文件中,然后执行pod install。CocoaPods就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数。

说明:
1、第三方库会被编译成.a静态库供我们真正的工程使用。CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。整个第三方库工程会生成一个名称为libPods.a的静态库提供给我们自己的CocoaPodsTest工程使用。
对于资源文件,CocoaPods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。
2、我们的工程和第三方库所在的工程会由一个新生成的workspace管理为了方便我们直观的管理工程和第三方库,CocoaPodsTest工程和Pods工程会被以workspace的形式组织和管理,也就是我们刚才看到的CocoaPodsTest.xcworkspace文件。
3、原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。
4、CocoaPods通过一个名为Pods.xcconfig的文件来在编译时设置所有的依赖和参数。

参考链接:
1.CocoaPods详解之使用篇:http://blog.csdn.net/wzzvictory/article/details/18737437
2.CocoaPods详解之进阶篇:http://blog.csdn.net/wzzvictory/article/details/19178709
3.CocoaPods原理系列:https://juejin.cn/post/6932739864613879821
4.CocoaPods原理及组件化:https://juejin.cn/post/6861887227438301198
5.Cocoapods基础使用:https://www.jianshu.com/p/2e88be63a18e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
6.rvm、Ruby 环境和 CocoaPods 安装使用及相关报错问题解决:https://xiaozhuanlan.com/topic/7654293801

2.安装Ruby环境

2.1 查看Mac是否安装Ruby和gem

PS:Ruby是一门开发语言,gem为Ruby第三方库管理工具,CocoaPods是用Ruby写的一个第三方工具。
在终端中输入命令:ruby --versiongem --version
输出如下类似提示符,则表示Ruby环境已安装

$ ruby --version
ruby 2.0.0p643 (2015-02-25 revision 49749) [x86_64-darwin14.3.0]
$ gem --version
2.4.8

2.2 若提示command not found 则需要安装Ruby环境

  • 安装Ruby环境需要安装Xcode及Command Line Tools。
  • 安装Command Line Tools:xcode-select --install
  • 安装RVM,Ruby的多版本管理工具。
  $ curl -L https://get.rvm.io | bash -s stable
  $ source ~/.rvm/scripts/rvm
  $ rvm install 2.0.0
  $ rvm use 2.0.0
  $ /bin/bash --login

3.安装CocoaPods

3.1 使用淘宝的镜像安装Ruby的第三方库,修改gem的镜像:

$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/

3.2 为了验证你的Ruby镜像是并且仅是淘宝,可以用以下命令查看:

$ gem sources -l
# 只有在终端中出现下面文字才表明你上面的命令是成功的:
* CURRENT SOURCES *
https://ruby.taobao.org/

如果出现多个需要将其余的源删除。

3.3 终端中执行安装CocoaPods

$ sudo gem install cocoapods

3.4 执行完成后,需要初始化CocoaPods的环境

$ pod setup

4.使用CocoaPods

4.1 创建Xcode工程并切换到该工程路径

cd+路径

4.2 使用命令pod init在当前文件夹下生成一个Podfile文件

4.3 编辑该文件,在该文件中输入如下信息:

该文件中的命令格式为:pod '第三库名称', '版本号';第三库名称,名称要正确,不然有可能安装失败。
其中版本号标识区别:
>= 1.0 至少版本为1.0
~> 1.0 兼容1.0版本的最新版
== 1.0或1.0 都表示指定版本

   $ vim Podfile
   platform :ios, '7.0'
   pod "AFNetworking", "~> 2.5.4"
   pod 'SDWebImage'
   pod 'KVNProgress'

4.4 安装工程依赖的第三方库,若出现pods installed字样表示安装成功

$ pod install
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (2.5.4)
Installing KVNProgress (2.2.2)
Installing SDWebImage (3.7.3)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `CocoaPodsDemo.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There are 3 dependencies from the Podfile and 3 total
pods installed.

4.5 关闭Xcode工程,打开.xcworkspace文件。

4.6 在工程中导入第三库文件,只需要#import <AFNetworking.h>类似的即可,开启CocoaPods之旅。

5. 补充:安装好以后在新的项目中使用

在终端中敲入命令
1.cd +项目的路径
2.pod init
3.vim Podfile(修改这个文件)
4.pod install(出现pods installed表示成功)
5.打开.xcworkspace文件就打开工程了就可使用
6.添加第三方库:点击Pods项目中的Podfile文件添加,然后点击install Pods(这种是安装了一个插件可以显示CocoaPods)
7.添加新库时,也可以添加完用端口敲命令方式(添加完成退出保存:先按esc,然后 :wq)
添加新库时候还可以直接打开写添加,opten后写完直接关掉,直接pods install即可安装成功
8.删除已安装的第三方库:终端中进入podfile文件 (vi podfile),然后直接去掉即可,再pod install。为省时间也可pod install --no-repo-update(不用每次都去仓库检测,更新...)

添加第三方
pod的第三方
pod成功
点击Pods项目中的Podfile文件添加
再点击install Pods(这种是安装了一个插件可以显示CocoaPods)
更新成功
打开文件修改

6.使用过程中遇到的各种问题Bug

6.1 pod setup更新设置仓库时无法成功,报错如下2种:

  • 错误如图:
[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.
You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.
错误1
错误2
  • 错误原因:

这些错误说明某些环境原因导致pod更新不了,可能原因有:1)gem版本太低;2)github无法连接;3)cocoapods目录下的配置信息错误;我们可以一个一个来排除

  • 解决办法:
删除以后重新pod更新,过一段时间更新到100%成功

敲入以上命令时,终端上是这个样子的(由于太长,仅截取前面一部分):

看到这里,说明你已经安装成功了。
相关链接:https://www.jianshu.com/p/90ca71b3b94a

6.2 因为git没有更新造成的问题

错误

6.3 CocoaPods更新慢的解决办法

使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动;原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少,加参数的命令如下;
cocoaPods安装的一些问题和具体使用时,发现很多cocoaPods的教程都不太适用,查看此链接或许有帮助:http://www.jianshu.com/p/5b3ba1297abb

pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
或者
pod install --no-repo-update
pod update --no-repo-update

6.4 因为修改了项目中pods文件导致安装不上(知本家)

场景及问题:合作开发时,其他开发者的cocoapods版本为1.7.2,当前自己的版本为最新版1.9.0。项目的source在以前其他开发者的cocoapods版本中更改了source,如下图。其他开发者可以正常pods,自己pods的时候就会出现下图报错的错误提示,时间很久,pods不成功。

解决:pods的时候先将这句话 source 'https://github.com/CocoaPods/Specs.git’ 去掉,再按平时流程一样pods即可成功。成功之后再把这句话加上去,上传代码到git,这样其他小伙伴就不影响。暂时未找到比较好的解决办法。

修改了source
没有被修改,正常的情况
pods会很久
报错

6.5 错误之ERROR: Could not find a valid gem 'cocoapods' (>= 0)...- bad response Not Found 404(新电脑安装)

https://www.jianshu.com/p/753678a21f0c

6.6 错误之[!] CDN: trunk Repo update failed(新电脑安装)

https://www.jianshu.com/p/bf1cbe49cb5d

6.7 错误之inherit! :search_paths

错误

删除即可pod成功
成功

6.8 错误之网络不好

如下图提示为网络不好的意思,需要换个快的网络或者连手机热点看看。网络正常快速即可成功

网络不好的原因
网络不好的原因
网络不好的原因

6.9 错误之cocoapods版本太低和platform

错误之cocoapods版本太低和platform

放开platform

6.10 CocoaPods更新慢的解决办法

使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动;原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:

pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
或者
pod install --no-repo-update
pod update --no-repo-update

6.11 cd 项目路径不正确进行 pod install 报错

cd 项目路径不正确进行 pod install 报错

cd 正确

6.12 新项目进行 pod init 报错

https://blog.csdn.net/qq_42148925/article/details/127958166

新项目进行 pod init 报错
输入这个即可:sudo gem update xcodeproj --pr
报错信息翻译
报错信息翻译

7. 常用的命令行

1.查看cocoapods版本 pod --version
2.搜索框架 pod search AFNetworking
3.ls -a:是显示该文件夹下的所有隐藏文件,会发现有一个.git文件说明该文件夹是一个git仓库,可以使用git的方法更新该文件夹的内容
4.ls -l:可以列出目录下的所有文件的名字,还可显示文件的详细信息(文件还是目录,权限,大小,所有者,修改时间等)
5.ls -la :显示当前目录下包括隐藏文件/目录的所有文件的详细信息
6.Mac显示默认隐藏的文件:defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
7.Mac关闭显示默认隐藏的文件:defaults write com.apple.finder AppleShowAllFiles No && killall Finder 2

8.私有库Pod

开发中可能会用到自己的私有库,可以通过直接拖入到开发的项目中集成,还有一种可以像其他第三库比如AFNetworking一样通过CocoaPods的方式pod集成导入开发的项目中。这个需要先将自己的私有库demo放在github(其他也可以如码云)上面,通过相关关联配置,最后再pod到自己的开发项目中。

相关链接:
https://blog.csdn.net/IT00544/article/details/113773892
https://juejin.cn/post/7059679100423634975
https://juejin.cn/post/7081436335721938952

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

推荐阅读更多精彩内容

  • CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPo...
    朝洋阅读 25,630评论 3 51
  • Ruby 安装 要安装cocospods 首先需要安装ruby,可以先安装xcode,再安装macport ,最后...
    山天大畜阅读 1,840评论 0 1
  • 一. CocoaPods的介绍 什么是CocoaPods?CocoaPods是一个负责管理iOS项目中第三方开源库...
    辉712阅读 3,911评论 0 7
  • 2016-12-07 华杉 有诚意,天地万物的能量都和你在一起。没诚意,“不诚无物”,啥都没有,一片荒漠。 【爱曰...
    郁萍阅读 828评论 0 3
  • 之前网络上有句很火的一句话“每一个优秀的人,都有一段沉默的时光”。 沉默也是孤独的一种,而在孤独中学会成长就是一种...
    木林彬阅读 230评论 0 1