iOS组件化开发-CocoaPods简介
CocoaPods简介
任何一门开发语言到达一定阶段就会出现第三方的类库管理工具,比如Java的Maven、WEB的Webpack等。在iOS中类库的管理工具-CocoaPods。
利用CocoaPods管理第三方库可以自动化帮我们完成各种库的依赖和配置,包括配置编译阶段、链接器选项、甚至是ARC环境下的-fno-objc-arc配置等。
CocoaPods的安装和使用网上文章很多,这里不在介绍,下面主要介绍CocoaPods使用执行命令的原理。
CocoaPods流程
CocoaPods整体的原理流程图,下面围绕个流程进行介绍。

1.安装好CocoaPods,会将官方的CocoaPods/Specs克隆到~/.cocoapods下,这个仓库存放这所有支持CocoaPods的第三方库的.podspec。它主要作者对库的描述信息,比如库的版本、作者、Source、库的依赖。
2.第一次执行pod search搜索指定第三方库时,为了提高效率,CocoaPods会对克隆下拉的所有库的podspec生成个缓存索引文件search_index.json。
3.执行pod intall / pod update安装指定第三方库,会先去本地search_index.json查找库的描述信息。其实核心的信息就是库的代码远程仓库地址、version版本、源文件、依赖信息,然后将第三方库集成到我们的项目中去。
CocoaPods常用命令
CocoaPods的通过很多命令去执行,下面对一些命令背后做的事情做些说明。
pod install和pod update
pod install和pod update两者都可以用作集成操作,其实两者是有区别的。
pod install
新建一个Podfile文件运行后,如果对依赖库不指定版本的话,cocoapods会安装最新的版本,同时会自动生成一个Podfile.lock文件,Podfile.lock文件里存储着我们已经安装的依赖库(pods)的版本。
再执行pod install的话,只会处理没有记录在Podfile.lock中的依赖库,会查找匹配Podfile中描述的版本。`对于已经记录在Podfile.lock的依赖库,会下载Podfile.lock文件中记录的版本`,而不会检查是否有更新。
pod update
推荐用法:pod update 要更新库的名字
这个命令会忽略Podfile.lock中的记录,直接去找符合Podfile文件中的该依赖库的约束版本(无约束的话就是最新版本)。
pod repo update
pod repo update 的工作就是更新pod资源目录,也就是master下的资源。

可能有些人会问了,我平时从来不会用pod repo update也可以拿到最新的库,那是因为在使用pod update是默认会执行一遍pod repo update 。并不需要经常跟你更新远程CocoaPods/Spec,如果每次都更新执行时间较长,我们可以用到命令pod update --no-repo-update 来指定只根据本地目录更新本地的索引文件,不需要拉取远程。
有些时候会引用一些私有库 , pod repo update 会把 ~/.cocoapods/repos/这个目录下所有的资源库目录都更新一遍,有时候不想更新master,只想更新某个具体的私有库
需要更新指定库
pod repo update ~/.cocoapods/repos/***/
pod repo
显示本地克隆的所有私有Speces库信息

pod cache clean --all
执行pod install会根据podfile中的库的版本描述安装,本地也会将依赖的版本源代码下载下来,这样下次其它项目pod install相同版本库时无需下载,提高速度。


如果想清除Pods目录的缓存库 执行命令
pod cache clean --all
pod repo remove
通过pod repo可以显示本地所有Spce仓库,如果想删除本地指定的Spce仓库,执行指令
pod repo remove 本地私有库的名称
对这些CocoaPods原理流程搞明白后就可以开始我们的组件化开发之旅了。
iOS组件化开发-CocoaPods简介的更多相关文章
- iOS组件化开发-CocoaPods安装
首先要检查Mac是否安装了rvm(ruby version manager).打开终端,输入指令$ rvm -v ,若没有安装 curl -L https://get.rvm.io | bash -s ...
- iOS组件化开发入门 —— 提交自己的私有库
前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模 ...
- iOS 组件化开发之使用CocoaPod制作自己的远程私有库
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好 ...
- iOS组件化开发· 什么是组件化
越来越多公司,开始了组件化,你还要等到什么时候...... 说到开发模式,我们最熟知的开发模式 MVC 或者最近比较热门的MVVM.但是我今天说的组件化的开发,其实MVC不是一类的.它其实是····· ...
- iOS组件化开发一本地环境配置(一)
首先我们要使用pod支持组件化开发 解决CocoaPods慢的方案(gem和pod repo换源) gem换源 $ gem sources --remove https://rubygems.org/ ...
- iOS组件化开发一远端私有库建立(二)
公共库业务,基础层划分! 一.构建私有云,本文推荐为码云 1.构建名称为LuckTimeSpec,选择私有建立: 2.Copy地址的https 链接: 二.打开终端 输入: cd /Users/zha ...
- iOS组件化开发一使用source管理远端库升级(四)
一.克隆远端库代码到本地选择master分支 1.克隆 2.代码会显示出你所有版本的tag 二.可以在Example目录下验证代码的正确行: cd 到库的文件夹然后 pod install comma ...
- iOS组件化开发一远程私有库的升级(三)
一.远程私有库的升级 1. 把新增的类 拖入到 classes 文件夹中 : 2. 修改 pod.spec 文件的 s.verson = ‘0.2.0': 二.更新远程仓库 1.cd 到本地仓库的位置 ...
- iOS组件化开发-发布私有库
远程索引库 将远程索引库添关联到本地 pod repo 查看本地已关联仓库源 pod repo add 本地索引库名称 远程索引库仓库地址 pod repo update 索引库名称 pod repo ...
随机推荐
- delphi基础篇之数据类型之一:1.简单类型(Simple)
1.简单类型(Simple) 简单类型包括实数类型(Real)和有序类型(Ordinal).有序类型又包括整数类型.字符类型.布尔类型.枚举类型和子界类型等. 1-1.有序类型 有序类型是一个有序数的 ...
- 3、Cookie与Session之间有哪些区别或者是优缺点?
Cookie与Session之间有哪些区别或者是优缺点? 知道了Cookie与Session,我们来做一些简单的总结: 1.Cookie可以存储在浏览器或者本地,session只能存在服务器 ...
- FreeBSD_11-系统管理——{Part_1-xfce 桌面}
一.首先安装 Xorg 安装 xorg pkg install xorg 清除旧文件(如果已前安装过 xorg) /etc/X11/xorg.conf /usr/local/etc/X11/xorg. ...
- 谷歌与Airbnb的JS代码规范
谷歌JS代码规范 规范代码原因:代码规范是为了保持源代码编写模式一致,便于维护代码,可读性高. 1.使用空格代替tab 规范随后指出应该使用2个,而不是4个空格带实现缩进.(除了每一行的终止符序列,A ...
- 2.执行计划(explain)分析
1.使用场景 获取执行计划命令:在select 命令前加上explain 或 desc explain select 或 desc select 1.语句执行之前 :防患于未然 2.出现慢语句时 :亡 ...
- [已解决]报错:ValueError: Expected 2D array, got scalar array instead
报错代码: new_x = 84610 pre_y = model.predict(new_x) print(pre_y) 报错结果: ValueError: Expected 2D array, g ...
- win7+ubuntu双系统安装
XP+ubuntu双系统可參考 xp硬盘上安装ubuntu12.04双系统 1.XP安全不再,最终将吾等磨机的人逼上梁山,是时候做一个win7+ubuntu的双系统了. 废话少说,直接进入主题,先腾出 ...
- mongo之$max
原集合: { _id: 1, highScore: 800, lowScore: 200 } 应用: #意思是:更新_id 等于1 的记录,条件是highScore 950>原纪录的highSc ...
- HTML5和CSS3工具资源汇总
HTML5 & CSS3 准备就绪 该网站通过扇形图表的形式展现了从08年到10年以来各大浏览器对HTML5和CSS3的支持情况.发展势头还是很可观的. HTML5安全手册 CSS3按钮生成器 ...
- 关于EntityFramework 更新数据记录时字段全部更新问题和不从数据库中获取直接更新记录
一.一直对这个比较疑惑感觉只修改一条数据记录的一个字段结果更新Savechages后跟踪生成sql竟然是全部被修改,感觉微软怎么这么傻,总觉得会有其它方式可以只更新部分字段,但一直没有找到相关设置,最 ...