创建CocoaPod私有库的详细步骤
一. 远程索引库
-
概念:每创建一个组件都会带有一个 xxx.podspec 的索引文件.专门用来存放这些索引文件的库就叫做索引库.我们需要将这些索引文件上传到远程索引库中去才能保证其他开发者能够拿来使用.
-
在GitHub或者其他代码托管平台上面创建远程索引库
https://github.com/Kinglioney/iOSPodSpecs.git
二. 本地索引库
与远程索引库对应,本地索引库是用来存放本地索引文件的库
- 创建本地索引库
pod repo 查看本地已经有哪些本地索引库
pod repo add <本地索引库的名字> <远程索引库的地址> 创建本地索引库并且与远程索引库做关联
三. 远程代码库
用来存放组件化的代码
四. 本地代码库
-
pod lib create <组件名> 会创建一个工程
-
编译成功后,将相应的文件拖入本地代码库中
-
编译组件不报错后,开始修改podspec文件:
a.修改版本号
b.修改项目的简单概述和详细描述
c.修改homepage 和 source 地址
d.添加依赖库
podspec文件的书写格式(从CocoaPod官网上摘抄的):
A Simple specification.
Pod::Spec.new do |spec|
spec.name = 'libPusher'
spec.version = '1.3'
spec.license = 'MIT'
spec.summary = 'An Objective-C client for the Pusher.com service'
spec.homepage = 'https://github.com/lukeredpath/libPusher'
spec.author = 'Luke Redpath'
spec.source = { :git => 'git://github.com/lukeredpath/libPusher.git', :tag => 'v1.3' }
spec.source_files = 'Library/'
spec.requires_arc = true
spec.dependency 'SocketRocket'
end
A specification with subspecs.
Pod::Spec.new do |spec|
spec.name = 'ShareKit'
spec.source_files = 'Classes/ShareKit/{Configuration,Core,Customize UI,UI}//.{h,m,c}'
...
spec.subspec 'Evernote' do |evernote|
evernote.source_files = 'Classes/ShareKit/Sharers/Services/Evernote//.{h,m}'
end
spec.subspec 'Facebook' do |facebook|
facebook.source_files = 'Classes/ShareKit/Sharers/Services/Facebook//.{h,m}'
facebook.compiler_flags = '-Wno-incomplete-implementation -Wno-missing-prototypes'
facebook.dependency 'Facebook-iOS-SDK'
end
...
end
- 编译通过后,提交组件到远程代码库并打tag
git add .
git commit -m "注释说明"
git remote add origin <远程代码仓库地址>
git push origin master
git tag <版本号> (此处的版本号必须和podspec里面写的版本号一致)
git push --tags
5.通过 pod spec lint --verbose --allow-warnings 命令来验证podspec索引文件是否有报错
6.验证通过后,提交组件
注意:此处有一点点不同的地方,如果你希望把组件开源给所有的开发者使用,可以使用Trunk提交组件 pod trunk push <索引文件的名字>,这样的话在第7步中就不需要指定地址了;
如果你希望组件只能在公司内部使用,是私有的不开源.pod repo push <本地索引库名字> <索引文件的名字> --verbose --allow-warnings 提交索引文件到远程索引库
7.使用的时候和CocoaPod引入第三方一样,需要在Podfile中指定组件远程索引库的地址,如果不指定默认就会从master的索引库中查找就会报错找不到该组件
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Kinglioney/iOSPodSpecs.git'
网友评论