pod安装有什么作用?
- 程序
pod
转到Podfile
顶部列出的source
。 如果您不提供source
,则pod
默认为https://github.com/CocoaPods/Specs。 - Pod遍历与其相依性清单相符的
.podspecs
的来源
pod'Dependency1'
pod'Dependency2'
pod'Dependency3'
如果版本不同,它将选择与该版本匹配的podspec,如果找不到,则会抛出错误。 如果未指定版本,则默认为1。 如果列出了多个来源,那么pod会在第一个框架中搜索所需框架的列表,如果找不到任何框架,它将检查列出的下一个框架,依此类推,直到找到所有或没有更多框架为止。剩下的资源来检查Pod安装将在何时失败。
3.到达podspec后,Pod会识别来源。 然后去那里
4.到达源后,它将遍历源,直到找到与名称匹配的项目。
5.一旦找到源文件,它就会通过检查源文件找出要包括哪些文件并将其引入项目。
6.然后检查列出的依赖性。
7. pod然后转到该项目的Podfile,
并重复步骤1–7,直到没有其他依赖项可以获取为止。
这是有效与coapapods一起工作所需的最低限度的高级知识。
更多细节
- 吊舱还访问源位置以获取吊舱的依赖关系…
当项目中有一个podfile
并运行pod install
。 程序pod
从source
变量Podfile
指定的Podfile
。 在这些CocoaPod
,程序pod
尝试查找.podspecs
(忽略其Podfile
可能存在或不存在)。
pod
读取.podspecs
文档,并检查s.dependency
值并尝试查找此处列出的依赖项。 它解决了冲突,例如,假设您的Podfile列出了两个依赖项: A
和B
A
依赖于C
版本1.1.0
,而B
依赖于C
版本1.2.0
。 该程序不会简单地两次安装依赖项C
它选择1.1.0
或1.2.0
解决依赖项C
的冲突版本,并且仅安装一次依赖项C
这是有关Pod安装的有趣文章。
这是我从那篇文章中得到的笔记。
运行Pod安装
- 阅读Podfile
- 版本控制和冲突
- 加载源。
- 生成pods.xcodeproj
- 安装库
- 写作点击
- 创建Podfile.lock
- 清单锁
- xcproj
少许肺炎:建议 :给予预防
读取Podfile
Cocoapods通过加载Podspec来列出显式和隐式定义的Pod,这些Podspecs远程存储在git或本地存储在〜/ cocoapods中
版本和冲突
选择在进行语义版本控制时要使用的框架版本。 如果两个podspec引用相同依赖项的两个非常不同的版本,则最终用户必须设置一个显式版本。
加载源
每个podspec都包含对带有git remote文件和标记源文件的引用,这些文件解析为提交SHA。 使用Podfile,podspec和缓存中的信息将源文件下载到pods目录。
生成pods.xcodeproj
Pods.xcodeproj使用xcodeproj gem更新。 如果文件不存在,则使用一些默认设置创建文件,否则从内存中创建文件。
安装库
当cocoapods将库添加到项目时,它会添加带有构建设置的.xconfig,一个私有.xcconfig,该私有.xcconfig将这些构建设置与defautl CocoaPods配置以及构建所需的prefix.pch和dummy.m合并。 为每个目标完成此操作后,将创建整个Pods目标,这将添加相同的文件,还有更多文件。 如果任何源包含资源束,则有关将束添加到应用程序目标的说明将添加到Pods-Resources.sh
。
创建Pods-environment.h的目的是提供宏,以帮助您了解某个物品是否来自容器。
plist和markdown可以帮助确认最终用户使用libc.m进行确认
写入磁盘
以前所有的工作都是使用内存中的对象。 使用Podfile.lock和Manifest.lock将Pods.xcodeproj写入磁盘
Podfile.lock
在源代码管理中选中该选项后,可以跟踪需要安装的Pod的所有已解析版本,以帮助团队。
清单锁
运行pod install时Podfile.lock的副本
注意-如果您收到“沙箱与podfile.lock不同步,因为manifest.lock!= podfile.lock。
由于pods目录并不总是受版本控制,因此这是确保开发人员在运行之前更新其pod的一种方法,否则应用程序将崩溃或构建将以其他不可见的方式失败。
XcProj
如果您的系统上有一个xcproj,它将把Pods.xcodeproj转换成旧的ASCII plist格式。 因为不再支持写这些文件并且已经有一段时间了,但是Xcode仍然依赖它而没有xcproj,您的Pods.xcodeproj被写为XMC plist,当您在Xcode中打开它时,它将被重写,从而导致文件差异。