创建一个私有的Spec Repo
何为Spec Repo?
1.拿cocoaPods公共库来说,他是所有的Pods的一个索引,就是一个容器,所有公开的Pods都在这个里面,他实际是一个Git仓库remote端在GitHub上,但是当你使用了Cocoapods后他会被clone到本地的~/.cocoapods/repos目录下,可以进入到这个目录看到master文件夹就是这个官方的Spec Repo了。这个master目录的结构是这个样子的:1
2
3
4├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec2.我们平时执行pod命令行指令时,如果后边加上
--no-repo-update就会不更新本地索引库直接进行pod的更新,这样速度会快些,因为我们不更新Spec Repo,即不需要把所有公开的Pods都更新一遍,这样虽然能提升速度,但不能跟进Pods的最新版本.
3.我们需要创建一个私有的SpecRepo,不能放在公开的Pods里供所有人使用,因此我们需要创建一个类似于master的私有Spec Repo,这里我们没有必要把现有的公开Pods都copy一份。所以重新创建一个Spec仓库(公司现在已经有自己的Spec库)。如何创建?
1.上面说了他只是一个Git仓库,因此我们需要自己搭建一个Git仓库,然后执行下边的命令:1
2
3
4命令行格式:
#pod repo add [Private Repo Name] [Spec Repo URL]
例如:
$ pod repo add TestSpecRepo https://github.com/FsThatOne/TestSpecRepo.git2.此时如果成功的话进入到
~/.cocoapods/repos目录下就可以看到TestSpecRepo这个目录了。至此第一步创建私有Spec Repo完成。
制作 CocoaPods 依赖库
每个 Pods 依赖库必须有且仅有一个名称和依赖库名保持一致,后缀名为
.podspec的描述文件。这里我们依赖库的描述文件名称应该为MyTestPods.podspec。
1.创建这个文件有两种途径:
1.复制现有的podspec,修改对应的参数
2.命令行创建:1
pod spec create MyTestPods
2.创建出
MyTestPods.podspec文件后,我们打开可以发现,该文件是 ruby 文件,里面有很多的内容,但是大多数都是我们不需要的,所以我们只需要根据项目的情况保留关键的一些内容就行:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Pod::Spec.new do |s|
s.name = "MyTestPods"
s.version = "0.0.1"
s.summary = "A description of MyTestPods."
s.description = <<-DESC
A longer description of MyTestPods in Markdown format.
DESC
s.homepage = "https://github.com/FsThatOne/MyTestPods"
s.license = "MIT"
s.author = { "王正一" => "fsymbio@icloud.com" }
s.source_files = "MyTestPods/*.swift"
s.framework = "UIKit"
s.requires_arc = true
end
2.第二步,将我们从项目抽取出来的可复用框架放到MyTestPods中,然后我们需要对刚刚加的pod进行验证,在实际操作中,这一步可能遇到的问题最多,我会针对我遇到的情况日后慢慢作出补充.执行命令行:
1
pod lib lint
成功时会显示以下输出:
1
2
3-> MyTestPods (0.0.1)
MyTestPods passed validation.
3.验证成功之后,我们只需要push到远程库,打上tag(这里的tag要与.podspec文件中的s.version一致),至此,我们的CocoaPods依赖库就创建成功了.
添加我们的 Podspec 到我们的 repo
1.执行命令行:
1
pod repo push TestSpecRepo MyTestPods.podspec
完成后可以看到效果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Validating spec
-> MyTestPods (0.0.1)
Updating the `MyTestPods' repo
Already up-to-date.
Adding the spec to the `MyTestPods' repo
- [Add] MyTestPods (0.0.1)
Pushing the `TestSpecRepo' repo
To https://github.com/FsThatOne/TestSpecRepo.git
9f32092..8d0ced5 master -> master
2.之后我们再进入~/.cocoapods/repos/TestSpecRepo,就可以看到我们创建的 Spec Repo 了.
测试私有pod.
1 | pod search MyTestPods |
接下来就是pod install了,如果在安装的时候显示没有找到:1
Unable to find a specification for `MyTestPods`
就尝试在pod file中添加依赖库时指定url,或者在该文件中指定源:1
2
3
4#官方Cocoapods的源
source 'https://github.com/CocoaPods/Specs.git'
#本地私有源
source 'https://github.com/FsTHatOne/TestSpecRepo.git'