blogger

skytoup's blog

分享经验, 共同进步; RSS: http://blog.skytoup.com/feed

文章44

分类0

评论0

2021 Cocoapods新手进阶指南之仓库源

老鸟可略过...

仓库源

Cocoapods 1.7.2版本前, 首次安装还需要初始化好几个GB仓库源(git方式拉取, 源为github), 拉起速度又慢, 而且改非常大。

后来在1.7.0提出一个实验性方案, 把git方式的仓库源改为CDN方式的仓库源, 最后在1.7.2正式启用。

  • 旧的仓库源: https://github.com/CocoaPods/Specs.git
  • 新的仓库源: https://cdn.cocoapods.org/

Cocoapods相关目录及结构

  • ${用户目录}/.cocoapods/repos/${源仓库名称} # 源仓库
  • git源仓库结构

    • ${三方库名称}/${版本号}/${spec文件}
  • CDN源仓库结构(主要结构)

    • all_pods.txt 所有库的版本号信息
    • all_pods_versions_${MD5[0]}_${MD5[1]}_${MD5[2]}.txtMD5(库名称)[0...3]切分文件存储库的版本号信息

      • txt文件每行一个库, 格式${库名称}/${版本号}/${版本号}/...

Podfile&源仓库&三方库关系图

pod update/install的部分简略流程

  1. 本地源仓库同步远程源仓库(强烈建议命令后面添加参数--no-repo-update略过这步, 有需要同步再手动更新pod repo update)
  2. 按库的名称在本地源仓库查找合适版本号的spec(git和CDN的源查找方式不一样)
  3. 根据spec中的source和其它相关参数下载(git/svn/hg/http)仓库文件(这步之前还有个本地缓存查找的过程)

库的名字查找spec

  • git仓库源

    • 根据本地目录结构查找spec文件
  • CDN仓库源

    1. 三方库的名称进行MD5(小写), 结果取前3位字母
    2. 访问对应的本地文件(all_pods_versions_${MD5[0]}_${MD5[1]}_${MD5[2]}.txt)查找合适的版本号
    3. 通过链接https://cdn.cocoapods.org/Specs/${MD5[0]}_${MD5[1]}_${MD5[2]}/${仓库名}/${版本号}/${仓库名}.podspec.json获取spec文件

rust写了个根据podfile.lock检测库是否有新版本的小工具, 里面就是利用CDN仓库源方式查找版本, 有兴趣可以去看看https://github.com/skytoup/PodHelper

源仓库管理命令

  • pod repo # 列出添加的源
  • pod repo add ${源仓库本地名称} ${源仓库链接} # 添加源
  • pod repo remove ${源仓库本地名称} # 移除源, 也可以直接删除${用户目录}/.cocoapods/repos/${源仓库名称}

相关链接

评论(0)

© 2020  skytoup's blog  · 由 Typecho 强力驱动
  Design by 往记