iOS组件化开发-CocoaPods简介
2018-12-01 10:48 iCoderHong 阅读(679) 评论(0) 编辑 收藏 举报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原理流程搞明白后就可以开始我们的组件化开发之旅了。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· Ollama系列05:Ollama API 使用指南
· 为什么AI教师难以实现
· 如何让低于1B参数的小型语言模型实现 100% 的准确率