Swift学习32:Cloning into 'tsinghua-git-cocoapods'...卡住不动
前言
- 在使用
cocoapods
安装三方库
的时候,使用pod install --verbose
或者pod update --verbose
的时候会卡住在如下图所示:
原因分析:
https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git
这个是清华的镜像源,你需要将现在的镜像源更换成清华的镜像源
1 | $ cd ~/.cocoapods/repos |
然后记得去项目中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
文件,直接升级pod
到Podfile
允许的最新版本。pod update
执行后最新的版本信息也会记录到Podfile.lock
文件,如果指向更新其中一个库,使用 pod update podname(库名)
举例说明:
- 第一步:
首先,张三新建了一个工程,创建了 Podfile
,在Podfile中引入了 A、B、C
三个 pod
。
然后执行 pod install
,A、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的信息,强行更新 B
到 1.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.