Cocoapods的相关知识点

最近需要在Cocoapods上发布SDK,虽然在之前的公司也弄过本地私有库,但是相比较发布到 Cocoapods 上还是有一些差别的,下面列举一些要点。

  • 验证本地 podspec 文件的合法性:pod spec lint XXX.podspec
  • 验证合法性通过之后将其推送到Cocoapods上,pod trunk push XXX.podspec
  • 获取本地Cocoapods 的缓存:pod cache list

Cocoapods的相关知识点_第1张图片
各个文件夹的作用如下图:
Cocoapods的相关知识点_第2张图片

  • 搜索并安装Cocoapods上的某一个库,大致执行流程为:
    1、从search_index.json中找到该库对应版本的podspec文件并将其下载到Specs/Release文件夹中
    2、根据该库的podspec文件中的source中的git地址,将对应版本的库下载到Pods/Release文件夹中
  • 将本地自己开发的库推送到Cocoapods仓库时,大致执行流程为:
    1、执行 pod spec lint XXX.podspec 时,如果没有依赖其他库时,会在 Specs/External文件中该库生成对应版本的 podsepc 文件,并对其文件名进行hash
    2、将该podspec文件中对应的库下载到Pods/External文件夹中
    3、如果发布的库依赖其他Cocoapods上发布的库时,会将依赖库的podspec文件下载到Specs/Release 文件夹中,依赖的库下载到 Pods/Release文件夹中

如何修改线上某一个指定版本的库(不重新发布新的版本)

如果发现发布到Cocoapods上的某一个版本有问题,但是又不想重新更新版本号该如何处理呢?主要步骤如下:

  1. 将修改后的库重新推送到远程仓库上
  2. 删除之前版本的本地tag以及远程tag
  3. 重新打tag并且推送到远程
  4. Cocoapods上该库的指定版本移除掉
  5. 本地验证podsepc文件,验证通过后推送到Cocoapods仓库
  6. 此时会发现,如果直接从远程仓库上下载修改后的库,集成到项目中修改的地方生效了,但是如果是直接通过pod导入的话,发现修改并没有生效,主要原因在于对应同一个版本的库,由于之前安装过,本地有缓存,所以不会再去重新下载修改后的相同版本的库,此时直接删除本地缓存即可

清除本地安装的Cocoapods的缓存

pod cache clean --all :清除 Pods 文件夹

移除 pod 官方库中的某一个版本

pod trunk delete XXX versionName

也可以放弃整个pod的所有版本。

pod trunk deprecate PodName

需要注意的:
  1. 邮箱的问题,首次推送会对注册的邮箱进行验证,点击打开邮箱中的链接才能推送成功
  2. XXX.podspec 中的版本号与仓库的tag必须对应上才能验证通过

你可能感兴趣的:(iOS移动开发)