摘要
cocoapods个人或公司私库搭建简单总结
准备工作
一、创建pods工程
pod lib create xxxx // 例如:pod lib create LXPatch
Paste_Image.png
工程如下:
Paste_Image.png二、在服务器上创建一个lxpatch的私库
clone下来,再把里面的.git文件夹拖到上一步创建的工程同级目录下,覆盖掉以前的.git,这样pod私库就可以与服务器上的同步处理了。
三、修改自己要对外公开的类,然后修改对应的.podspect文件里的内容
如:
Paste_Image.png上面,classes为自己的私库存放类的地方,如自己写的一些框架.h.m文件,如果有其它资料,可在同级目录下创建文件夹去存即,默认有一个Assert文件来,上图中自己删除了。
修改podspec文件
Pod::Spec.new do |spec|
spec.name = 'LXPatch' #私库的名字
spec.version = '0.1.0' #版本号,也就是tag标签
spec.license = { :type => 'BSD' }
spec.homepage =
spec.authors = { 'Tony Million' => }
spec.summary = 'A short description of LXPatch.' #简单描述这个库的作用
spec.source = { :git => :tag => '0.1.0' } # 这里是你的私库在服务器的位置与tag标签号
spec.source_files = 'LXPatch/Classes/**/*' #classes下所有文件
spec.framework = 'JavaScriptCore' #你用到的库
spec.requires_arc = true #是否为arc
s.dependency 'JSPatchPlatform' #依赖的第三方
end
四、检验本地podspec是否合规
pod lib lint xxxx // pod lib lint LXJSPatch.podspec
这里可能用到的选项
- --use-libraries // 利用静态库
- --allow-warnings //忽略警告
- --verbose //打印日志
五、上传本地库到远程私库中
git add .
git commit -m"初始化"
git push
// 然后打标签,这里的标签要和podspec中的tag值一致
git tag 0.1.0
git push --tags //推送到服务器
六 为.cocoapods/repos目录下添加自己的描述文件私库
默认下,cocoapods是在master文件夹中找描述文件然后去下载对应的第三方,而我们弄的私库是没有添加到github的spec中,因此是找不到,于是我们要把自己的描述库添加到这里来
- 在服务器中创建一个仓库,我们可以取名前缀+spec,我这里为为lxspec
- 执行
pod repo add lxspec remote_url
,lxspec与服务器名一致,后面跟上库的地址
上面执行完后,在cocoapods/repos下就有了master与lxspec两文件夹了,其中lxspec是从上面自己创建的地址clone下来的,目前里面还没有podspec描述文件。
pod repo add lxspec remote_url
七 验证podsepc文件,并把它添加到.cocoapods/repos/lxspect目录下,同时推送到对应的远程描述文件库地址中
pod repo push lxspec [LXPatch.podspec] # lxspec是指.cocoapods/repos下你自己的描述文件仓库的名字,[LXPatch.podspec]是指xxx.podspec文件地址。意思就是该描述文件添加到这个lxspec中,同时并推送到服务器上
八 使用注意点,podfile要加上描述库地址
source
source #使用自己的描述库,必须加上github上的那个。因为有了自己的库后默认不会去CocoaPods/Specs.git查找
target 'LXJSPatch_Example' do
#pod 'LXJSPatch', :path => '../' # 使用本地仓库的
pod 'LXJSPatch' # 使用自己服务器上的私库
target 'LXJSPatch_Tests' do
inherit! :search_paths
pod 'JSPatchPlatform'
ends
end
命令笔记
pod lib create xxxx # 自动创建个人库
pod repo add spec_repo_name remote_url # spec_repo_name 为spec repo 的名字, remote_url为存放库的描述文件的仓库地址
// 这句话会把remote_url的库clone到.cocoapods/repos目录下。
pod repo lint spec_repo_name #spec_repo_name 指描述文件仓库的名字(与上面clone下来的名字一致)
// 该命令首先根据本地的git私库地址来验证远程的.spec中的是否合规
pod repo push reponame [NAME.podspec] # reponame是指描述文件仓库的名字,[NAME.podspec]是指xxx.podspec文件地址。意思就是该描述文件添加到这个repo
//会把.spec拷贝到.cocopods/repos相对应的文件夹中,最后再把.cocoapods/repos对应的个人spec仓库push到服务器上