今天学习cocoapods开发私有库,在师父的指导下,反反复复了好多次才自己成功完成,自己总结一下,希望对大家有所帮助。
主要分为两大部分:一、私有库索引仓库 二、Pod项目工程文件
一、私有库索引仓库
1.创建Spec Repo
先来说第一步,什么是 Spec Repo ?他是所有的Pods的一个索引,就是一个容器,所有公开的Pods都在这个里面,他实际是一个Git仓库 remote端 在GitHub上,但是当你使用了Cocoapods后他会被clone到本地的~/.cocoapods/repos目录下,可以进入到这个目录看到master文件夹就是这个官方的Spec Repo了。这个master目录的结构是这个样子的
.
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec
创建一个 Git仓库,这个仓库你可以创建私有的也可以创建公开的,不过既然私有的Spec Repo,还是创建私有的仓库吧,需要注意的就是如果项目中有其他同事共同开发的话,你还要给他这个Git仓库的权限。
我是在玛云上创建了一个私有仓库如下图:(特别注意哦:要创建个空的仓库,所有多余的选项都不要勾选)
点击创建
接下来关键的Terminal指令:cd到根目录
mkdir FFSpecs
cd FFSpecs
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin git@gitee.com:cocoadogs/FFSpecs.git//这里要替换成自己的git仓库地址哦
git push -u origin master
pod repo add FFSpecs git@gitee.com:cocoadogs/FFSpecs.git
二、创建Pod项目工程文件
同样在玛云创建了一个空的项目仓库
先cd到要创建项目的目录然后执行,我一般放在Document目录下
pod lib create podTestLibrary
之后询问四个问题, 问完这4个问题他会自动执行pod install命令创建项目并生成依赖
此时我们将Document下的项目关联到远程仓库
git add .
git commit -s -m "Initial Commit of Library"
git remote add origin git@coding.net:wtlucky/podTestLibrary.git #添加远端仓库
git push origin master #提交到远端仓库
然后最重要的一布,我们要修改好podspec文件内容如下图
红色框住的地方一定要写正确哦。
**
此时我们新增个test文件,注意文件位置非常重要重要非常重要
**
此时我们将所修改的内容push到远程。
接着,我们要验证本地podspec文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过xcode的WARNING是可以存在的,验证需要执行一下命令
pod lib lint xxx.podspec --verbose --allow-warnings --no-clean
当看到
-> PrivateTestThird (0.1.0)
PrivateTestThird passed validation.
时,说明验证通过了。
此时我们要打tag,这一步是重中之重,有了tag。我们平常pod的时候才有版本号的索引。所以必须要有。
git tag -m "first release" 0.1.0
git push --tags #推送tag到远端仓库
然后我们就可以想Spec Repo提交podspec了
pod repo push FFSpecs PrivateTestThird.podspec --allow-warnings #前面是本地Repo名字 后面是podspec名字
完成之后这个组件库就添加到我们的私有Spec Repo中了,可以进入到~/.cocoapods/repos/WTSpecs目录下查看
.
├── LICENSE
├── PrivateTestThird
│ └── 0.1.0
│ └── PrivateTestThird.podspec
└── README.md
再去看我们的Spec Repo 远端仓库,也有了一次提交,这个podspec也已经被Push上去了
至此,我们的这个组件库就已经制作添加完成了,使用pod search命令就可以查到我们自己的库了
$ pod search PrivateTestThird
-> PrivateTestThird (0.1.0)
Just Testing.
pod 'PrivateTestThird', '~> 0.1.0'
- Homepage: xxx
- Source: xxx
- Versions: 0.1.0 [FFSpecs repo]
到此结束,谢谢。