CocoaPods是iOS最常用的第三方类库管理工具,绝大多数开源类库都已支持CocoaPods。公司内部也可以使用CocoaPods管理创建内部私有类库,并提交至私有Pods索引或官方索引。
安装
安装之前确认电脑已安装好 Ruby 环境。如何安装 Ruby ,请百度或Google查询,这里不再详述
安装命令:
$ sudo gem install cocoapods
敲入命令后,可能会发现半天没有反应,因为我们处在天朝,被墙了。解决办法:使用淘宝的Ruby镜像来访问CocoaPods,依次输入以下命令,之后再次执行安装命令即可
$ gem sources -l
$ gem sources –remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
更新命令:
$ sudo gem update cocoapods
使用
在项目中使用CocoaPods
进入项目所在根目录,新建并编辑 Podfile 文件,加入所需第三方类库。
创建(如果不存在):
$ touch Podfile
编辑并添加类库:
$ vim Podfile
添加类库:
platform :ios, '7.0'
pod 'PodName', '~> 1.0'
保存后执行安装或更新:
$ pod install 或 pod update
执行命令后,终端出现
[!] From now on use `Demo.xcworkspace`.
注意最后一句话意思是:以后打开项目就用Demo.xcworkspace 打开,而不是之前的.xcodeproj文件。
搜索类库是否支持 CocoaPods
为了确认我们需要的类库是否支持CocoaPods,可以使用CocoaPods的搜索功能进行验证
$ pod search PodName
关于编辑 Podfile 文件时,第三方类库版本号的规则:
pod ‘AFNetworking’ //不显式指定依赖库版本,表示每次都获取最新版本
pod ‘AFNetworking’, ‘2.0’ //只使用2.0版本
pod ‘AFNetworking’, ‘>2.0′ //使用高于2.0的版本
pod ‘AFNetworking’, ‘>=2.0′ //使用大于或等于2.0的版本
pod ‘AFNetworking’, ‘<2.0′ //使用小于2.0的版本
pod ‘AFNetworking’, ‘<=2.0′ //使用小于或等于2.0的版本
pod ‘AFNetworking’, ‘~>0.1.2′ //使用大于等于0.1.2但小于0.2的版本,相当于>=0.1.2并且<0.2.0
pod ‘AFNetworking’, ‘~>0.1′ //使用大于等于0.1但小于1.0的版本
pod ‘AFNetworking’, ‘~>0′ //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本
创建Pod类库
执行命令创建Pod项目工程:
$ pod lib create PodName #创建名为PodName的类库
执行以上命令后,会询问几个问题,按需选择即可。之后会自动执行 pod install 命令并生成项目文件。目录结构如下图:
接下来就是开发你的类库 或者 先提交至远程仓库!!!!
提交Pod类库至远端Git仓库
通过CocoaPods创建的Pod项目本身可能已在本地Git管理下,我们只需给它添加远程仓库即可,这里注意远端仓库地址一定是SSH的,不允许使用http/https
$ git add .
$ git commit -s -m 'message'
$ git remote add origin git@****.git #添加远程仓库,如果已有远程仓库,则不再重复添加
$ git push origin master
因为podspec获取git版本控制项目资源需要使用到tag标签,所以每次发布新版本,需要打上tag标签:
$ git tag -a '0.0' -m 'message'
$ git push --tags
podspec
在项目根目录下创建podspec文件 (如果podsepc文件不存在)
$ pod spec create podspecName
配置文件
Pod::Spec.new do |s|
s.name = "YKKit" #名称
s.version = "0.1.0" #版本号
s.summary = "Just Testing." #简短介绍,下面是详细介绍
s.description = <<-DESC
Testing Private Podspec.
DESC
s.homepage = "https://coding.net/u/mahongwei/p/FNKit"#主页,这里要填写(任意)可以访问到的地址,不然验证不通过
#s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"#截图
s.license = 'MIT' #开源协议
s.author = { "mahognwei" => "mahognwei@foxmail.com" } #作者信息
s.source = { :git => "https://git.coding.net/mahongwei/FNKit.git", :tag => s.version.to_s} #项目地址,这里不支持ssh的地址,验证不通过,只支持HTTP和HTTPS,最好使用HTTPS
# s.social_media_url = 'https://twitter.com/<twitter_username>' #多媒体介绍地址
s.platform = :ios, '7.0' #支持的平台及版本
s.requires_arc = true #是否使用ARC,如果指定具体文件,则具体的文件使用ARC
s.source_files = 'Pod/Classes/**/*' #代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
s.resource_bundles = { 'PodTestLibrary' => ['Pod/Assets/*.png'] } #资源文件地址
s.public_header_files = 'Pod/Classes/**/*.h' #公开头文件地址
s.frameworks = 'UIKit' #所需的framework,多个用逗号隔开
s.dependency 'AFNetworking', '~> 2.3' #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
end
验证podspec文件
$ pod lib lint
验证通过后,如需发布新版本,则将Pod项目提交至Git仓库,并打上tag标签。注意修改podspec文件中version版本的修改
私有Pods索引
添加私有索引库,创建远端Git仓库取到SSH地址,执行添加命令:
$ pod repo add Spec_Repo_Name git@****.git
删除私有索引库
$ pod repo remove Spec_Repo_Name
将podspec文件发布到私有索引中
$ pod repo push Spec_Repo_Name Pod.podspec
找不到podspec
在使用pod类库时,实际项目中报错 Unable to find a specification for _,因为pod install / pod update 只会在官方源即master中搜索,而我们创建的私有pod文件在私有的Spec Repo中。解决方法:在Podfile文件顶部添加我们自己的仓库即可,但注意官方源必须也添加上。
source "https://github.com/CocoaPods/Specs.git" #官方仓库地址
source "https://git.coding.net/mahongwei/YKSpecs.git" #我们的私有仓库地址