pod安装有什么作用?

  1. 程序pod转到Podfile顶部列出的source 。 如果您不提供source ,则pod默认为https://github.com/CocoaPods/Specs。
  2. Pod遍历与其相依性清单相符的.podspecs的来源
  pod'Dependency1' 
pod'Dependency2'
pod'Dependency3'

如果版本不同,它将选择与该版本匹配的podspec,如果找不到,则会抛出错误。 如果未指定版本,则默认为1。 如果列出了多个来源,那么pod会在第一个框架中搜索所需框架的列表,如果找不到任何框架,它将检查列出的下一个框架,依此类推,直到找到所有或没有更多框架为止。剩下的资源来检查Pod安装将在何时失败。

3.到达podspec后,Pod会识别来源。 然后去那里

4.到达源后,它将遍历源,直到找到与名称匹配的项目。

5.一旦找到源文件,它就会通过检查源文件找出要包括哪些文件并将其引入项目。

6.然后检查列出的依赖性。

7. pod然后转到该项目的Podfile,并重复步骤1–7,直到没有其他依赖项可以获取为止。

这是有效与coapapods一起工作所需的最低限度的高级知识。

更多细节

  1. 吊舱还访问源位置以获取吊舱的依赖关系…

当项目中有一个podfile并运行pod install 。 程序podsource变量Podfile指定的Podfile 。 在这些CocoaPod ,程序pod尝试查找.podspecs (忽略其Podfile可能存在或不存在)。

pod读取.podspecs文档,并检查s.dependency值并尝试查找此处列出的依赖项。 它解决了冲突,例如,假设您的Podfile列出了两个依赖项: AB A依赖于C版本1.1.0 ,而B依赖于C版本1.2.0 。 该程序不会简单地两次安装依赖项C 它选择1.1.01.2.0解决依赖项C的冲突版本,并且仅安装一次依赖项C

这是有关Pod安装的有趣文章。

这是我从那篇文章中得到的笔记。

运行Pod安装

  1. 阅读Podfile
  2. 版本控制和冲突
  3. 加载源。
  4. 生成pods.xcodeproj
  5. 安装库
  6. 写作点击
  7. 创建Podfile.lock
  8. 清单锁
  9. 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中打开它时,它将被重写,从而导致文件差异。