Swift学习32:Cloning into 'tsinghua-git-cocoapods'...卡住不动

张建 lol

前言

  • 在使用 cocoapods 安装 三方库 的时候,使用 pod install --verbose 或者 pod update --verbose 的时候会卡住在如下图所示:

原因分析:

https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git

这个是清华的镜像源,你需要将现在的镜像源更换成清华的镜像源

1
2
3
$ cd ~/.cocoapods/repos 
$ pod repo remove master
$ git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master

然后记得去项目中Podfile里添加如下:

1
source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
  • 如果你遇到 fetal: Could not read from remote repository

原因分析:首先看一下git源 git@172.16.21.253:platgorm_ios/JITLog.git 说明是一个内网的git仓库源

解决办法:如果你想下载并使用需要去配置 SSK Key,然后去让管理员给你 开启访问并下载的权限

  • OC 项目导入 .framework 静态库 SDK,报错如下:

直接将文件夹拖入到项目中

1
ibrary not loaded: @rpath/JIT_GM_SSL.framework/JIT_GM_SSL 并crash

解决办法:将 Do Not Embed 改为 Embed & Sign

pod install 和 pod update 区别

  • pod install 除了首次安装时使用,之后增删也可以用

  • pod update 只有在需要更新pod时使用

区别:

  • 要理解他们的区别,就不能不提 Podfile.lock 这个文件了;从后缀可以看出这是一个锁。锁什么呢?锁住 pods 的版本。在首次执行 pod install 时,cocoapods 根据 podfile 文件来 导入合适版本的pods

  • 然后,Podfile.lock 文件被创建,此次所有 pod版本信息 会被记录在该文件中。之后再执行 pod install 时,会先从 Podfile.lock 文件读取信息。已有记录的 pod 会维持原版本。无记录的 pod 则根据 Podfile 导入合适版本的 pod,然后新导入的 pod 信息也会被记录在 Podfile.lock 文件中

  • 总之 Podfile.lock 就是 锁住版本信息 的作用

  • 如果想要升级版本,那么就需要使用 pod update 了,pod update 会或略 Podfile.lock 文件,直接升级 podPodfile 允许的最新版本。

  • pod update 执行后最新的版本信息也会记录到 Podfile.lock 文件,如果指向更新其中一个库,使用 pod update podname(库名)

举例说明:

  • 第一步:

首先,张三新建了一个工程,创建了 Podfile,在Podfile中引入了 A、B、C 三个 pod

然后执行 pod installA、B、C 被导入,假设版本都是1.0.0。

Podfile.lock 会被创建, 记录下A、B、C 的版本为1.0.0。

  • 第二步:

过了一段事件,张三在Podfile中新增了pod D。

假设D的版本也是1.0.0,而B已经发布了新版本1.1.0。

张三仅想导入D,而保持B的版本不变,避免更新B带来的风险。

于是张三执行了 pod install

执行中,CocoaPods 发现 Podfile.lock 中B的版本是 1.0.0,于是B维持不变。发现新增了D,于是导入了1.0.0的D,并将D的信息记录到 Podfile.lock

  • 第三步:

又过了一段时间,李四加入了项目。

假设C的已经发布了新版本1.2.0。

李四clone项目后,他使用 pod install

命令执行时,发现A、B、C、D在Podfile.lock中都有记录,因此他获取的A、B、C、D也会都是记录的1.0.0。

这样就保证了张三和李四使用的第三方是一致的。

  • 第四步:

半个月后,张三觉得B的1.1.0足够成熟,可以集成了,但是C的1.2.0还需要再等等。

于是,他执行了 pod update B 来升级B,但维持C的版本为1.0.0。

CocoaPods 会忽略 Podfile.lock 中记录的B的信息,强行更新 B1.1.0

然后张三本地的 Podfile.lock 中B的版本信息也会更新到 1.1.0。

张三提交,李四拉取后,执行 pod install,于是李四的B也更新到 1.1.0。又跟张三保持一致了。

总结:

需要更新 pod 版本时使用 pod update(更新全部),如果想更新其中一个用 pod update 库名 ,其他情况下使用 pod install

  • Post title:Swift学习32:Cloning into 'tsinghua-git-cocoapods'...卡住不动
  • Post author:张建
  • Create time:2023-05-23 10:25:19
  • Post link:https://redefine.ohevan.com/2023/05/23/Swift/Swift学习32:Cloning-into-tsinghua-git-cocoapods-卡住不动/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
On this page
Swift学习32:Cloning into 'tsinghua-git-cocoapods'...卡住不动