简述对cocoapods使用 唐巧的理解,为什么要使用cocoapods使用 唐巧

对于iOS App的开发,几乎都采用了Cocoapods来管理第三方库,那么对于我们开发人员来说,这是必备技能,必须要掌握如何使用。这篇文章就是介绍如何安装和使用CocoaPods的。
这篇文章对哪些人群参考价值?
对未使用过Cocoapods的人群有参考价值
对使用过Cocoapods,但是未深入了解过的用户有参考价值
对有开源精神的,希望将自己的代码贡献到Cocoapods的用户有参考价值
如果您不属于以上人群,您是可以不阅读本篇文章的,当然阅读完也会有很大的帮助。
温馨提示:在篇文章中所使用的Xcode版本为Xcode7.
什么是CocoaPods?
简单来说,就是专门为iOS工程提供对第三方库的依赖的管理工具,通过CocoaPods,我们可以单独管理每个第三方库,可以更方便地管理每个第三方库的版本,而且不需要我们做太多的配置,直接交由提供支持CocoaPods项目的作者来配置了,如此便可直观、集中和自动化地管理我们项目的第三方库。
为什么需要使用CocoaPods?
我们也许有过这样的感受: 每添加一个第三方库、Framework或者SDK,我们都需要手动添加相关依赖库,在工程buildsetting中配置路径,在build phases中添加依赖的系统库。如果所导入的第三方库还依赖其他第三方库,我们也需要手动导入且分别添加工程配置。
当我们需要更新某个第三方库的时候,我们又要手动移除该库,导入新的库,然后再配置,这是相当麻烦且没有意义的工作。当使用CocoaPods管理后,我们只需要修改为某个版本,再执行pod update即可。
当我们需要去掉某个第三方库时,我们是怎么做的呢?是不是将该库移除掉,然后还得把相关配置也移除掉,这样工作才干净。是不是很麻烦呢?当我们使用Cocoapods管理后,我们是怎么做的?只需要在Podfile删除该引入该库的语句,然后执行pod update即可。
当我们开始使用CocoaPods管理第三方库后,我们只需要相当少的配置,其它的一切都交由CocoaPods来管理即可,我们使用起来就更省心了。
如何安装CocoaPods?
CocoaPods is built with Ruby and is installable with the default Ruby available on OS X. We recommend you use the default ruby.
也就是说CocoaPods是通过Ruby来安装的,MAC OSX都有一个默认的Ruby版本,推荐我们通过默认的Ruby来安装CocoaPods。
使用下面的命令安装:
sudo gem install cocoapods
事实上,这样安装未必能安装成功,因为默认的cocoapods网址是国外的,需要VPN才能访问,因此我们可以改一种方式:
1、先输入&gem sources --remove https://rubygems.org/
2、等待有反映后,再输入&gem source -a https://ruby.taobao.org/
3、验证是否成功替换:gem source -l
4、最后就可以通过sudo gem install cocoapods正常安装cocoapods了。
等待安装完成后,就可以开始使用CocoaPods了。
注意:source或者sources都可以.
如何使用CocoaPods?
要使用CocoaPods,就需要一个Podfile文件。我们是如何为所有的工程建立Podfile的,下面的方式是基本的方式。
cd Desktop/Demos/KVODEMO
touch Podfile
vi Podfile
第一步:进入到我们所建立的工程的目录,这里是KVODEMO
第二步:通过touch命令新建Podfile
第三步:通过vi Podfile进入编辑Podfile
第四步:添加第三方库,如下图,我们添加了AFNetworking和ObjectiveSugar库,其中我们添加的AFNetworking版本是2.0版本,ObjectiveSugar版本是0.5.
pod 'AFNetworking', '~& 2.0'&&
pod 'ObjectiveSugar', '~& 0.5'
按下esc键,然后输入:wq,就可以保存了。然后在终端输入pod install,就可以安装第三方库了。
在安装完成后,我们不再是打开后缀为.xcodeproj的工程,而是打开后缀为.xcworkspace的工作空间了。
关于Podfile更高级的使用,请参考
或者关注后续文章!
在Objective-C工程中的使用
在工程中,我们只需要通过引入改文件就可以直接使用了,比如我们引入了第三方库Masonry(纯代码自动布局),我们在Objective-C工程中就可以通过import头文件即可。
#import &Masonry.h&
注意,如果这么做提示找不到头文件,那么我们可以尝试这么引入:#import "Masonry.h"或者通过#import "Masonry/Masonry.h"
如果仍然没有效果,那么需要在工程配置一下.在工程的Build Settings搜索Search Paths,然后在User header search paths中添加$(SRCROOT)并选择recursive(也就是递归查找)
在Swift工程中的使用
我相信大家在Swift工程中使用CocoaPods也遇到了不少问题,尤其是如何import模块问题。 当初我遇到这种问题时,也在网上搜索了很多的资料,但是都不是我希望的方案。在网上有两种方式: 通过Swift工程可以桥接Objectice-C的方式,建立一个Bridge-head.h(名字随便起),然后进入到Build Settings,在搜索框中输入bridg,找到Objective-C Bridging Header,选项,把头文件的路径赋值给该选项。如下所示:
也就是:工程名/桥接文件名.h。在刚才所建立的桥接文件中,通过#import "头文件.h"就可以了。
虽然是Objective-C第三方库,事实上我们也可以使用Swift的方式引入的,也就是通过&import 模块名&的方式来引入。所以对于上面的方式,我是不喜欢的。那么再看看网上的另一种方式:
当然,现在swift出了一个,专门管理第三方引用的。
这是通过submodule的方式来管理的。 创建submodule,在当前项目的同级目录下执行类似这样的命令,如下:
git submodule add https:///Masonry.git
然后将生成的Masonry.xcodeproj拖入到工程中。 在xcode工程的general中,点击embeded libraries中的+号,然后改我们的第三方库framework,类似下图:
最后就可以直接在工程中需要使用的地方,通过import模块名来使用了。 如果是多人团队开发,我们就需要共享了,那么其他成员就需要通过下面的命令来安装:
git submodule update --init --recursive
这是通过递归来安装或者更新submodule。这是挺麻烦的一件事。然后根据使用的经验,我们下载别人的工程下来后,执行了上面的命令,安装好相关模块了,运行工程经常出现报错的问题,也就是配置问题。因此,个人很不喜欢这种方式。
事实上,在Xcode7是不再需要这么做了,对于其他Xcode版本是否需要,未验证。 我们通过cocoapods安装的第三方库会自动生成为framework,然后我们只需要在使用的地方直接通过import 模块名使用即可。但是有时候可能会出现某个第三方库直接通过import 模块名时,提示找不到,也就是没有智能提示。这时候我们可以通过在xcode工程的general中的embeded libraries点击+,然后导入该framework,就可以正常import了。另外如果导入的第三方库在运行时,报错了,类似于:
dyld: Library not loaded: @rpath/ReactiveCocoa.framework/ReactiveCocoa
Referenced from: /private/var/mobile/Containers/Bundle/Application/31ABC86A-C1BD-40DD-A117-D2C8F79A98FE/SwiftGithubClient.app/SwiftGithubClient Reason: image not found
那么我们可以这么解决:
在Build Phases-&Link Binary With Libraries-&找到出错的库的名称-&修改required为optional即可。
如何升级CocoaPods版本?
升级CocoaPods是非常简单的,只需要一个命令即可。 正常情况下,只需要一个命令就可以升级了:
sudo gem install cocoapods
但是有可能需要更新gem才能升级cocoapods,因此我们可能需要这么做:
$ sudo gem update --system // 先更新gem,国内需要切换源
$ gem sources --remove https://rubygems.org/
$ gem sources -a http://ruby.taobao.org/
$ gem sources -l
&&&&CURRENT SOURCES
&&&&http://ruby.taobao.org/
$ sudo gem install cocoapods // 安装cocoapods
$ pod setup
然后查看版本号:
$ pod --version
如何让自己的开源项目支持CocoaPods?
这里就介绍我写的一个三方库HYBMasonryAutoCellHeight让其支持Cocoapods的步骤。
1、第一步:打开终端并进入到工程的目录。这里是我所开源的一个HYBMasonryAutoCellHeight开源库,用于自动计算cell的高度。
cd HYBMasonryAutoCellHeight
2、第二步:创建一个Podspec文件。通过命令pod spec create创建,
pod spec create HYBMasonryAutoCellHeight
3、第三步:编辑该podspec文件:
VI HYBMasonryAutoCellHeight.podspec
大家会看到,这自动生成的已经是一个模板了,我们需要做的就是修改相关内容,补充内容就可以满足我们的需求了。对于更高级的使用,就需要参考官方文档,一步步地学习使用了。 看看我所提供的第三方库的podspec文件的配置,去掉注释后看一看最关键的配置:
Pod::Spec.new do |s|
s.name&&&&&&&& = "HYBMasonryAutoCellHeight"
s.version&&&&&&= "0.0.1"
s.summary&&&&&&= "基于Masonry的自动计算cell的行高的扩展库"
s.homepage&&&& = "/cocoapods-support/"
s.license&&&&&&= "MIT"
s.author&&&&&& = { "huangyibiao" =& "" }
s.platform&&&& = :ios, "6.0"
s.source&&&&&& = { :git =& "/、HYBMasonryAutoCellHeight.git", :tag =& "0.0.1" }
s.source_files&&= "HYBMasonryAutoCellHeight", "*.{h,m}"
s.requires_arc = true
s.dependency "Masonry", "~& 0.6"
这一步很关键,需要配置的东西比较多。主要是s.source这里必须提供我们的git路径、指定tag号和s.source_files这里必须指定库的源代码文件。通常我们会把我们的库放到与Demo工程的.xcodeproj同级,比较这里的HYBMasonryAutoCellHeight目录是与.xcodeproj是同级的父级目录,然后我们就可以更简单的设置了。如下图:
然后我们在设置s.source_files时,第一个就设置为HYBMansonryAutoCellHeight,第二个就是设置为所有的.{h,m}类型的文件。对于比较复杂的设置,可以参考AFNetworking中的podspec文件。
如果我们的开源库依赖系统库怎么办?
# s.framework = 'SomeFramework'// 去掉#,设置依赖的系统库名称
# s.frameworks = 'SomeFramework', 'AnotherFramework'//设置多个系统库名称
# s.library = 'iconv'// 设置只依赖一个系统的library
# s.libraries = 'iconv', 'xml2' // 设置依赖多个系统的library
# s.xcconfig = { 'HEADER_SEARCH_PATHS' =& '$(SDKROOT)/usr/include/libxml2' }// 这里是工程配置,这样使用者就不需要手动处理,由pod自动处理了。
如果的开源库依赖其他第三方库,怎么办:
s.dependency 'JSONKit', '~& 1.4'//设置我们的开源库依赖哪些第三方库和依赖的版本号。
4、第四步:这里呢,我们设置的版本号为0.0.1,那么tag号为0.0.1,因此我们还需要新建一个tag,名为0.0.1,然后推到git:
$ git commit -m "如果当前有变化,先提交到git上,再创建tag"
$ git tag 0.0.1
$ git push --tags
$ git push origin master
第四步可以不用。
接下来,我们需要验证我们的配置是否正确:
5、当然我们还可以直接使用:pod lib lint来验证所有,最后一个是设置允许警告:
pod lib lint HYBMasonryAutoCellHeight.podspec --allow-warnings
如果验证通过,会出现这样的提示:
-& HYBMasonryAutoCellHeight (0.0.1)
HYBMasonryAutoCellHeight passed validation.
如果刚才我们的配置出错,或者需要修改一些内容,重新再推,则可以先删除远程的tag 0.0.1,然后在修改后,重复上面的第四步。下面是删除远程tag命令:
git push origin :refs/tags/0.0.1
6、第五步:在验证通过后,提交到cocoapods。也就是通过命令pod trunk push库名.podspec来推送到远程的cocoapods:
pod trunk push HYBMasonryAutoCellHeight.podspec --allow-warnings
如果出现警告,需要修改相关内容以去掉警告。当操作成功后,我们就可以通过pod search命令来搜索我们的库了。
$ pod search HYBMasonryAutoCellHeight
-& HYBMasonryAutoCellHeight (0.0.1)
&& 基于Masonry的自动计算cell的行高的扩展库
&& pod 'HYBMasonryAutoCellHeight', '~& 0.0.1'
&& - Homepage: http:///cocoapods-support/
&& - Source:&& https:////HYBMasonryAutoCellHeight.git
&& - Versions: 0.0.1 [master repo]
更详细地使用,请参考
这里有一篇文章,写得相当不错:
如何生成Cocoapods私有库?
要让自己的库变成私有库,那么我们的代码也是需要通过git来管理的。 这里假设我们新建了一个工程,名叫BookEffect,然后已经push到git远程服务器。
第一步:按照第六节一样,创建好podspec文件,并将整个工程推送到git服务器这边。
第二步:这才是引入私有库的方式。pod 'DemoLib',:git=&"http://xxxxx.git"(替换为真实的git地址)
具体不细说,请参考:
使用Cocoapods打包静态库
这里就不细说,不过推荐一篇文章:,写得很不错,如果需要,可以参考。
最后,感谢各位认真阅读本篇文章,感谢您的支持。
阅读(...) 评论()CocoaPods 安装和使用教程 - 简书
CocoaPods 安装和使用教程
CocoaPods是什么?
当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思就是,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。如果能有什么工具能解决这些恼人的问题,那将“善莫大焉”。所以,你需要CocoaPods。CocoaPods应该是iOS最常用最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为iOS程序员的我们,掌握CocoaPods的使用是必不可少的基本技能了。
如何下载和安装CocoaPods?
在安装CocoaPods之前,首先要在本地安装好Ruby环境。至于如何在Mac中安装好Ruby环境,请google一下,本文不再涉及。假如你在本地已经安装好Ruby环境,那么下载和安装CocoaPods将十分简单,只需要一行命令。在Terminator(也就是终端)中输入以下命令(注意,本文所有命令都是在终端中输入并运行的。什么,你不知道什么是终端?那请小编吃饭,小编告诉你):sudo gem install cocoapods但是,是的,又但是(不过是个可喜的“但是”)。我们可以用淘宝的Ruby镜像来访问cocoapods。按照下面的顺序在终端中敲入依次敲入命令:$ gem sources --remove http://rubygems.org///等有反应之后再敲入以下命令$ gem sources -ahttp://ruby.taobao.org/为了验证你的Ruby镜像是并且仅是taobao,可以用以下命令查看$ gem sources –l只有在终端中出现下面文字才表明你上面的命令是成功的:*** CURRENT SOURCES ***http://ruby.taobao.org/上面所有的命令完成之时,在小编的终端上是这个的样子
这时候,你再次在终端中运行:$ sudo gem install cocoapods等上十几秒钟,CocoaPods就可以在你本地下载并且安装好了,不再需要其他设置。敲入以上命令时,小编终端上是这个样子的(由于太长,仅截取前面一部分):
看到这里,你心里会不会说,我靠!太爽了,这么容易就可以下载并且安装好了!是的,小编也是这么想的。CocoPods就是这么简单,使用也十分简单。继续往下看吧。如何使用CocoaPods?
好了,安装好CocoPods之后,接下来就是使用它。所幸,使用CocoPods和安装它一样简单,也是通过一两行命令就可以搞定。小编在这里用两种使用场景来具体说明如何使用CocoaPods。场景1:利用CocoaPods,在项目中导入AFNetworking类库AFNetworking类库在GitHub地址是:/AFNetworking/AFNetworking为了确定AFNetworking是否支持CocoaPods,可以用CocoaPods的搜索功能验证一下。在终端中输入:$ pod search AFNetworking过几秒钟之后,你会在终端中看到关于AFNetworking类库的一些信息。这说明,AFNetworking是支持CocoaPods,所以我们可以利用CocoaPods将AFNetworking导入你的项目中。首先,我们需要在我们的项目中加入CocoaPods的支持。你可以跟随小编的步骤,先利用Xcode创建一个名字CocoaPodsDemo的项目,用于以下的教程。创建好之后,在继续下一步之前,小编先截图,看看项目没有支持CocoaPods时的项目Xcode目录结构:
上图等一下要跟项目支持CocoaPods之后的项目Xcode目录结构做对比。你看到这里也许会问,CocoaPods为什么能下载AFNetworking呢,而不是下载其他类库呢?这个问题的答案是,有个文件来控制CocoaPods该下载什么。这个文件就叫做“Podfile”(注意,一定得是这个文件名,而且没有后缀)。你创建一个Podfile文件,然后在里面添加你需要下载的类库,也就是告诉CocoaPods,“某某和某某和某某某,快到碗里来!”。每个项目只需要一个Podfile文件。好吧,废话少说,我们先创建这个神奇的PodFile。在终端中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile,运行:$ vim Podfile然后在Podfile文件中输入以下文字:platform :ios, '7.0'pod "AFNetworking", "~& 2.0"注意,这段文字不是小编凭空生成的,可以在AFNetworking的github页面找到。这两句文字的意思是,当前AFNetworking支持的iOS最高版本是iOS 7.0,要下载的AFNetworking版本是2.0。然后保存退出。vim环境下,保存退出命令是::wq这时候,你会发现你的项目目录中,出现一个名字为Podfile的文件,而且文件内容就是你刚刚输入的内容。注意,Podfile文件应该和你的工程文件.xcodeproj在同一个目录下。这时候,你就可以利用CocoPods下载AFNetworking类库了。还是在终端中的当前项目目录下,运行以下命令:$ pod install
或者 pod install --verbose --no-repo-update因为是在你的项目中导入AFNetworking,这就是为什么这个命令需要你进入你的项目所在目录中运行。运行上述命令之后,小编的终端出现以下信息:
注意最后一句话,意思是:以后打开项目就用CocoaPodsDemo.xcworkspace打开,而不是之前的.xcodeproj文件。你也许会郁闷,为什么会出现.xcodeproj文件呢。这正是你刚刚运行$ pod install命令产生的新文件。除了这个文件,你会发现还多了另外一个文件“Podfile.lock”和一个文件夹“Pods”。 点击CocoaPodsDemo.xcworkspace打开之后工程之后,项目Xcode目录结构如下图:
你会惊喜地发现,AFNetwoking已经成功导入项目了(红框部分)!现在,你就可以开始使用AFNetworking.h啦。可以稍微测试一下,在你的项目任意代码文件中输入:#import 或者#import "AFNetworking.h"然后编译,看看是否出错。如果你严格按照小编上述的步骤来,是不可能出错的啦。至此,CocoPods的第一个应用场景讲述完毕。别看小编写了这么多,其实过程是十分简单的。总结一下就是:o先在项目中创建Podfile,Podfile的内容是你想导入的类库。一般类库的原作者会告诉你导入该类库应该如何写Po运行命令:`$ pod install.场景2:如何正确编译运行一个包含CocoPods类库的项目你也许曾经遇到过(特别是新手iOS开发者)这种情况,好不容易在GitHub上找到一份代码符合自己想需求,兴冲冲下载下来,一编译,傻眼了,发现有各种各样错误。一看,原来是缺失了各种其他第三方类库。这时候莫慌,你再仔细一看,会发现你下载的代码包含了Podfile。没错,这意味着你可以用CocoaPods很方便下载所需要的类库。下面,小编以代码UAAppReviewManager为例来说明如何正确编译运行一个包含CocoPods类库的项目。UAAppReviewManager是一个能够让你方便地将提醒用户评分的功能加入你的应用中。当你去UAAppReviewManager的GitHub地址下载这份代码之后,打开Example工程(UAAppReviewManagerExample),编译,你会发现Xcode报告一大堆错误,基本都是说你编译的这份代码找不到某某头文件,这就意味着你要成功编译UAAppReviewManager的Example代码,必须先导入一些第三方类库。同时你会发现在UAAppReviewManagerExample文件夹下面有三个跟CocosPods相关的文件(文件夹):Podfile,Podfile.lock和Pods,如下图:
用这时候,打开终端,进入UAAppReviewManagerExample所在的目录,也就是和Podfile在同一目录下,和场景1一样,输入以下命令(由于已经有Podfile,所以不需要再创建Podfile):$ pod update过几秒(也许需要十几秒,取决于你的网络状况)之后,终端出现:Analyzing dependenciesFetching podspec for `UAAppReviewManager` from `../`Downloading dependenciesInstalling UAAppReviewManager (0.1.6)Generating Pods projectIntegrating client project[!] From now on use `UAAppReviewManagerExample.xcworkspace`.这时候,再回到UAAppReviewManagerExample文件夹看一看,会看到多了一个文件UAAppReviewManagerExample.xcworkspace:
直接运行项目运行成功注意,这里有个小问题,如果刚刚你不是输入$ pod update,而是输入$ pod install,会发现类库导入不成功,并且终端出现下面提示:[!] Required version (UAAppReviewManager (from `../`)) notfound for `UAAppReviewManager`.Available versions: 0.1.6这里的意思大概是Podfile文件过期,类库有升级,但是Podfile没有更改。$ pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。但是$ pod update会更新所有的类库,获取最新版本的类库。而且你会发现,如果用了$ podupdate,再用$ pod install就成功了。那你也许会问,什么时候用$ pod install,什么时候用$ podupdate呢,我又不知道类库有没有新版本。好吧,那你每次直接用$ pod update算了。或者先用$ pod install,如果不行,再用$pod update。CocoaPods还算完整的教程(安装、使用、项目管理、注意事项)
我的图书馆
CocoaPods还算完整的教程(安装、使用、项目管理、注意事项)
MarkDown还是用不溜,改天学习学习整理一下,再来一篇,暂时先将就着看。
第一节:CocoaPods简介(这一节纯粹是粘来的)
作者:原文地址:
1、为什么需要CocoaPods在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson、AFNetworking、Reachability等等。使用这些库的时候通常需要:
下载开源库的源代码并引入工程向工程中添加开源库使用到的framework解决开源库和开源库以及开源库和工程之间的依赖关系、检查重复添加的framework等问题如果开源库有更新的时候,还需要将工程中使用的开源库删除,重新执行前面的三个步骤,顿时头都大了。。。
自从有了CocoaPods以后,这些繁杂的工作就不再需要我们亲力亲为了,只需要我们做好少量的配置工作,CocoaPods会为我们做好一切!
2、什么是CocoaPodsCocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。使用CocoaPods的目的是让我们能自动化的、集中的、直观的管理第三方开源库。
第二节:CocoaPods安装(算了算了,这一节也粘过来吧,注意有改动,并且都是需要在终端里运行的shell命令哦)
作者:原文地址:
1、安装(这一节仔细看完再装)CocoaPods是用Ruby实现的,要想使用它首先需要有Ruby的环境。幸运的是OS X系统默认的已经可以运行Ruby了,因此我们只需要执行以下命令:
$ sudo gem install cocoapods
CocoaPods是以Ruby gem包的形式被安装的。在安装执行的过程中,可能会问我们是不是更新rake,输入y即可。这是因为rake gem包会在安装的过程中检查更细,如果有可用的新版本就会出现刚才的选项。在安装进程结束的时候,执行命令:
$ pod setup
如果没有报错,就说明一切安装就成功了!
2、安装过程中可能遇到的问题①执行完install命令半天没反应这是因为Ruby的默认源使用的是cocoapods.org,国内访问(蛋疼的中国局域网)这个网址有时候会有问题,网上的一种解决方案是将源替换成淘宝的(淘宝的Ruby源前两天把自己的http服务停掉了,这里得改成https,如果之前已经用的是淘宝的http服务的可以举一反三把http服务remove掉,加入https服务),替换方式如下:
$ gem sources --remove https://rubygems.org/
//等有反应之后再敲入以下命令
$ gem sources -a https://ruby.taobao.org/
要想验证是否替换成功了,可以执行:
$ gem sources -l
正常的输出是:
*** CURRENT SOURCES ***
https://ruby.taobao.org/
再来重新安装一遍
$ sudo gem install cocoapods
②gem版本过老(没报错可跳过)
gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是升级gem,执行下述命令即可:
$ sudo gem update --system
③安装完成后,执行pod setup命令时报错:(没报错可跳过)
/Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in `to_specs': Could not find 'cocoapods' (&= 0) among 6 total gem(s) (Gem::LoadError)
from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec'
from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in `gem'
from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `&main&'
这就是路径设置的问题,可以通过执行:
$ rvm use ruby-1.9.3-p448
3、升级CocoaPods升级很简单,再次执行安装命令即可:
$ sudo gem install cocoapods
需要注意的是,如果安装的时候使用了sudo,升级的时候一样需要使用该关键字,不然升级完了以后又会出现路径不匹配问题。
第三节:CocoaPods使用(这个还是我自己写吧,再粘过来就要被人打死了)
安装成功啦,咱们来创建Podfile文件
//咱们先滚去项目的根目录,如果不会,你就先滚去看看shell命令教程吧
$ cd /Users/JamesGu/Desktop/CocoaPodsProject
//创建Podfile文件
$ touch Podfile
这样子你的项目目录里就多了一个Podfile文件(没有后缀哦)
编辑一下Podfile文件,来点直接的(当然是在项目目录)
//打开Podfile文件
$ open Podfile
platform :ios, '7.0'
pod "AFNetworking", "~& 2.6.1"
pod "MBProgressHUD", "~& 0.9.1"
上边第一句意思是我要用ios的类库,还要是支持7.0以上的,然后我要用AFNetworking的2.6.1版本和MBProgressHUD的0.9.1版本,还要加类库?继续往后添即可,在这里可以不加版本(eg:pod "MBProgressHUD" ),在没有Podfile.lock文件约束的情况下(后边会讲到),当然就会默认下载当前最新类库的给你。
保存保存保存保存保存保存保存保存保存保存
开始要导入三方库了(去项目根目录,这一步很慢很慢的,请原谅中国的特殊网络)
$ pod install
开始CocoaPods就开始根据Podfile文件为我们下载代码库,配置依赖,添加代码库用到的framework终端是这么显示的
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (2.6.1)
Installing MBProgressHUD (0.9.1)
[!] From now on use `CocoaPodsProject.xcworkspace`.
最后一句英文认识吗?
是哒,以后你就要用xcworkspace文件来打开项目了,CocoaPods会帮你把你原本的项目和一个CocoaPods项目组成一个工作空间,编译时候,CocoaPods项目会预先被编译,生成一个.a的静态类库文件,供你的主项目调用,而这一切CocoaPods已经帮你做好了,你只需要打开xcworkspace写你的代码而已。
完整过程![Uploading 87B5BBF9-7FC6-4BD7-859B-79B988BD37BD_449931.png . . .]
补张图给大家
装完之后的项目结构
如果你仔细看过上边的应该就对CocoaPodsProject.xcworkspace和Podfile这两个文件的作用很清楚了
第四节:含有CocoaPods的项目的管理
接下来就要讲到Podfile.lock文件和Pods文件夹了。Podfile.lock :这个文件是用来保存已经安装的Pods依赖库的版本。Pods文件夹:不用说,这里边全是引用的三方类库。
接上上边说,如果Podfile.lock文件丢失,你再使用pod install命令,并且Podfile中含有没有指定版本的类库,那你的类库就会下载最新的版本,有些比较活跃的三方项目更新很频繁,它们一旦更新方法名或者实现方式,你调用的代码就报错了,这是灾难性的。
看过其他教程的人一定会奇怪,很多教程中用的是pod update 命令,为什么你一直在提pod install,因为pod update会更新的你Podfile.lock文件到最新版本,接下来的害处就如上段所说。
所以千万记住,无论是自己的项目,还是跑别人的源码,一定要用pod install,至于pod update,看你自己是不是要三方升级类库(我还是建议最好在Podfile中指定版本,想要升级,只需更改Podfile中的版本号,再pod install)。
曾经有一份别人的源码摆在我的面前,只有一个Podfile文件,没有Podfile.lock,还在说明里告诉大家用pod update,当时我傻傻的以为是我的问题,愣是没跑起来。
我自己svn上的项目
所以CocoaPods管理的项目,生成的四个文件,只用上传Podfile和Podfile.lock,其他的不要上传,毕竟每pod install一遍,如果有改动,svn就会有一大堆的提交,这种情况是谁都不想看到的,所以呢版本控制只留这两个文件就好。
发表评论:
TA的最新馆藏

我要回帖

更多关于 cocoapods1.0.1使用 的文章

 

随机推荐