CocoaPods

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项目目录结构

接下来就是开发你的类库 或者 先提交至远程仓库!!!!

提交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" #我们的私有仓库地址
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,158评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,600评论 1 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,785评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,655评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,075评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,002评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,146评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,918评论 0 211
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,671评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,838评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,318评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,636评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,343评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,187评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,982评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,126评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,934评论 2 279

推荐阅读更多精彩内容

  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 20,584评论 0 39
  • Ruby 安装 要安装cocospods 首先需要安装ruby,可以先安装xcode,再安装macport ,最后...
    山天大畜阅读 1,772评论 0 1
  • CocoaPods操作手册 本文档介绍了啥? 为什么要使用CocoaPods? 如何安装CocoaPods? Po...
    风小钻阅读 7,403评论 1 10
  • CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPo...
    朝洋阅读 25,492评论 3 51
  • Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自...
    Nash33阅读 2,060评论 0 50