Pod Install又失败了么?---- 理解Pod Install流程,玩儿转Pod,我有我的任性~

1、Pod Install…… CDN:trunk Repo update failed

Cocoa Pod 是玩 iOS 的童鞋必不可少的小伙伴,是一款优秀的包管理工具。然鹅,出于各种各样的原因,pod install 失败屡见不鲜。比如笔者最近更新 cocoaPod 之后,就遇到了下面的问题:

[!] CDN: trunk Repo update failed - 2 error(s):
CDN: trunk URL couldn't be downloaded: https://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/9/b/9/aubio-iOS-SDK/0.4.1/aubio-iOS-SDK.podspec.json Response: Couldn't connect to server
CDN: trunk URL couldn't be downloaded: https://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/9/b/9/aubio-iOS-SDK/0.4.4/aubio-iOS-SDK.podspec.json Response: Couldn't connect to server

“CDN: trunk Repo update failed” 为关键词搜索,发现遇到问题的小伙伴还真不少👇

问题热度相当高

好在,解决方案并不复杂,即:在 PodFile 中添加下面的配置(指定 Repo 源)。

source 'https://github.com/CocoaPods/Specs.git'
问题解决方案

然,问题的莫名解决并不能让一个负责人的小伙伴感到舒心……

2、搞清原理才能感到舒心

小伙伴们会有各种各样的不安,比如:
1)source 是要干嘛?
2)为什么要配置 https://github.com/CocoaPods/Specs.git 这么定制化的链接?
3)这样修改 Podfile 会留下隐坑么?
4)为什么这行配置能解决问题?

所以,为了舒心,我们需要知道……

2.1、Pod Install做了一些什么

1)找寻Repo
pod 中的 Repo,我们可以理解为 Podspec 文件的管理仓库.

What's PodSpec
A specification describes a version of Pod library. It includes details about where the source should be fetched from, what files to use, the build settings to apply, and other general metadata such as its name, version, and description.

2)寻找模块描述(Podspec)
比如我们再 Podfile 中配置了要加载 Masonry

pod 'Masonry', '1.1.0'

那么,执行 pod install 的时候,pod 会从配置的 Repo 中去寻找 Masonry 对应的 Podspec 文件。

What's Podfile
The Podfile is a specification that describes the dependencies of the targets of one or more Xcode projects.

3)找到第三方库工程,下载代码
Podspec 中包含了第三方库的工程位置信息、有效代码信息等。所以,依据找到的 Podspec 文件的描述,pod 就可以将第三方库集成进你的工程啦~

2.2、CDN问题发生在Setp 1

容易发现(别问我为什么容易……),我们片头提到的 CDN 问题的本质是 Pod Repo 关联的失败。具体来说,老版本的 cocoaPod 的默认 Repo 即:https://github.com/CocoaPods/Specs.git;而新版本 cocoaPod 的默认管理仓库切换到了 trunk(Type:CDN,URL:https://cdn.cocoapods.org/

通过 pod repo list 命令可以很方便地查看已经配置的 Repo

本地Repo

无论是因为国内被墙还是服务器本身出现问题等任何原因啦,反正目前看来,国内小伙伴该没人能有效使用 trunk 这个 Repo,所以我们在 PodFile 中将指定 Repo 为之前的默认 Repo
即:

source 'https://github.com/CocoaPods/Specs.git'

现在舒心了嘛:

1)source是要干嘛?
A:source 是指定 Podspec 文件的查找源(指定目标Repo

2)为什么要配置 https://github.com/CocoaPods/Specs.git 这么定制化的链接?
A:参数 https://github.com/CocoaPods/Specs.gitcocoaPod 旧版本的默认 source

3)这样修改Podfile会留下隐坑么?
A:仅仅显性配置了 source 而已,当然没啥隐坑。

4)为么什么这行配置能解决问题?
A:因为Ta正中我们的痛点,让我们找到一个有效的官方Repo

然而,费心了解的底层原理,总有一些 「自己的任性」 想要实践~

3、任性:不信任官方Repo,我要我自己的Repo

木问题!

Repo 不过是一个 Podspec 的管理仓库,能找到对应的 Podspec 就好了,谁说一定要用官方的 Repo 呢?所以,我们可以建立自己的 Repo,甚至是不公开的 Repo,即 Pod 私有仓库的概念。

What's Private Pods
CocoaPods is a great tool not only for adding open source code to your project, but also for sharing components across projects. You can use a private Spec Repo to do this.

操作也很简单(当然看上面的官方介绍也行咯)
1)建立一个自己的 Podspec 管理仓库(就是一个 Git Repo
2)通过 Pod 命令,或者依照 Pod 的约定,将对应 Podspec 文件提交到第一步建立的 Repo 中。
3)本地 Pod 关联我们自己的 Repo(通过 pod repo add 命令)

# pod repo add 示例
pod repo add CYSpec https://github.com/chrisYooh/CYSpec.git

# 成功后pod repo list 应该可以看到新添加的repo信息
pod repo list
...
CYSpec
- Type: git (master)
- URL:  https://github.com/chrisYooh/CYSpec.git
- Path: /Users/chris/.cocoapods/repos/CYSpec
...

4)配置私有 Repo 源(在 Podfile 中)

source "https://github.com/chrisYooh/CYSpec.git"

理清了原理……有没有发现

一切都那样得理所当然!然而……

4、任性升级:Repo我都懒得配!

可以!

目标是获得对应模块的 Podspec 嘛!我已经知道Ta在哪啦!Repo 请靠边站!

1)直接指定第三方库的 Git工程 地址&提交号

pod 'CYNetworking', :git => 'https://github.com/chrisYooh/CYNetworking.git', :commit => '96609df'

(不成功?Baby,先保证对应Git的提交版本的工程根目录下有一个Podspec文件吧~)

5、终极任性:网络我都懒得连!

好……同意……!

比如阿里的前向推理框架MNN,在Ta的示例Demo中,Pod就直接从本地去拉……

pod 'MNN', :path => "../../"

结论

我懂原理我任性,呃……就是这样!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353