cocoapod 私有库库会不会影响ios上架

CocoaPods详解之----使用篇
我的图书馆
CocoaPods详解之----使用篇
CocoaPods详解之----使用篇
原文地址:
转载请注明出处
如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢!
一、什么是CocoaPods
1、为什么需要CocoaPods
在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson、AFNetworking、Reachability等等。使用这些库的时候通常需要:
下载开源库的源代码并引入工程向工程中添加开源库使用到的framework解决开源库和开源库以及开源库和工程之间的依赖关系、检查重复添加的framework等问题如果开源库有更新的时候,还需要将工程中使用的开源库删除,重新执行前面的三个步骤,顿时头都大了。。。
自从有了CocoaPods以后,这些繁杂的工作就不再需要我们亲力亲为了,只需要我们做好少量的配置工作,CocoaPods会为我们做好一切!
2、什么是CocoaPods
CocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。
使用CocoaPods的目的是让我们能自动化的、集中的、直观的管理第三方开源库。
二、安装CocoaPods
CocoaPods是用Ruby实现的,要想使用它首先需要有Ruby的环境。幸运的是OS X系统默认的已经可以运行Ruby了,因此我们只需要执行以下命令:[objc] $&sudo&gem&install&cocoapods&&CocoaPods是以Ruby gem包的形式被安装的。在安装执行的过程中,可能会问我们是不是更新rake,输入y即可。这是因为rake gem包会在安装的过程中检查更细,如果有可用的新版本就会出现刚才的选项。
在安装进程结束的时候,执行命令:[objc] $&pod&setup&&如果没有报错,就说明一切安装就成功了!
2、安装过程中可能遇到的问题
①执行完install命令半天没反应
这有可能是因为Ruby的默认源使用的是cocoapods.org,国内访问这个网址有时候会有问题,网上的一种解决方案是将远替换成淘宝的,替换方式如下:[objc] $&gem&sources&--remove&https:&&&&$&gem&sources&-a&http:&&要想验证是否替换成功了,可以执行:[objc] $&gem&sources&-l&&正常的输出是:[objc] ***&CURRENT&SOURCES&***&&&&http:&&
②gem版本过老
gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是升级gem,执行下述命令即可:[objc] $&sudo&gem&update&--system&&
③安装完成后,执行pod setup命令时报错:
[objc] /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&'&&这就是路径设置的问题,可以通过执行:[objc] $&rvm&use&ruby-1.9.3-p448&&解决该问题。
3、升级CocoaPods
升级很简单,再次执行安装命令即可:[objc] $&sudo&gem&install&cocoapods&&需要注意的是,如果安装的时候使用了sudo,升级的时候一样需要使用该关键字,不然升级完了以后又会出现路径不匹配问题。
三、使用CocoaPods
如果之前做的一切顺利,接下来就可以体验体验CocoaPods的神奇之处了,需要经过以下几步:
为了演示这个过程,我创建了一个名为CocoaPodsTest的工程。
1、创建Podfile
CocoaPods的一切都是从一个名为Podfile的文件开始的,我们需要先创建这个文件。个人习惯使用命令行,我会这样做:[objc] $&cd&/Users/wangzz/Desktop/CocoaPodsTest&&$&touch&Podfile&&首先进入到工程的根目录下,创建空白的Podfile文件,创建完毕的目录结构如下图:
(PS:Podfile文件也可以不放在工程的根目录下,只是会稍微麻烦点,在下一篇文章中会有介绍,敬请关注。)
2、编辑Podfile
根据需要,我们可以在Podfile文件中写入需要用到的第三方库,以SBJson、AFNetworking、Reachability三个库为例,我的Podfile内容如下:[objc] platform&:ios&&pod&'Reachability',&&'~&&3.0.0'&&pod&'SBJson',&'~&&4.0.0'&&&&platform&:ios,&'7.0'&&pod&'AFNetworking',&'~&&2.0'&&
3、执行导入命令
准备工作都完成后,开始导入第三方库:[objc] $&cd&/Users/wangzz/Desktop/CocoaPodsTest&&$&pod&install&&首先进入工程根目录,然后执行pod install命令,CocoaPods就开始为我们做下载源码、配置依赖关系、引入需要的framework等一些列工作,命令的执行结果打印出来如下:[objc] Analyzing&dependencies&&Downloading&dependencies&&Installing&AFNetworking&(2.1.0)&&Installing&JSONKit&(1.5pre)&&Installing&Reachability&(3.0.0)&&Generating&Pods&project&&Integrating&client&project&&&&[!]&From&now&on&use&`CocoaPodsTest.xcworkspace`.&&这就说明pod install命令执行成功了。再来看看工程根目录发生的变化,如下图:
可以看到,工程的根目录下多了三个东西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目录。
(PS:篇幅有限,Podfile.lock文件会放到系列文章的下一篇介绍,敬请关注。)
再看看刚才执行完pod install命令打印出来的内容的最后一行:[objc] [!]&From&now&on&use&`CocoaPodsTest.xcworkspace`.&&提示我们从现在起,我们需要使用CocoaPodsTest.xcworkspace文件来开发。
对于工程发生的变化,有几点需要说明:
第三方库会被编译成静态库供我们正真的工程使用
CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。整个第三方库工程会生成一个名称为libPods.a的静态库提供给我们自己的CocoaPodsTest工程使用。
我们的工程和第三方库所在的工程会由一个新生成的workspace管理
为了方便我们直观的管理工程和第三方库,CocoaPodsTest工程和Pods工程会被以workspace的形式组织和管理,也就是我们刚才看到的CocoaPodsTest.xcworkspace文件。
原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。
打开CocoaPodsTest.xcworkspace,界面如下:
工程的目录结构还是非常明显的。
在项目中引用刚才添加的第三方库的头文件,执行编译操作,果断成功!
至此,CocoaPods使用篇告一段落,接下来打算再用一个篇幅介绍CocoaPods稍微深层次的东西,敬请关注。
四、参考资料
TA的最新馆藏
喜欢该文的人也喜欢使用CocoaPods来管理iOS项目的依赖库 - qq_的专栏 - CSDN博客
使用CocoaPods来管理iOS项目的依赖库
原文地址:/blog//shi-yong-cocoapodslai-guan-li-iosxiang-mu-de-yi-lai-ku/
说明:执行$
pod setup这步可能比较慢,需要多等待一段时间,也可能是我网络的问题
当然我们也可以更新我们的CocoaPods,同样也是使用ruby的gem命令:
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&1&/span&
$ [sudo] gem update cocoapods
然而你也可以更新CocoaPods的预览版,执行下面的命令:
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&1&/span&
$ [sudo] gem update cocoapods --pre
查找第三方库
如果我们不知道cocoaPods管理的库中,是否有你想要的库,那么你可以通过$
pod search xxx命令进行查找,以下是我用$
pod search sdwebimage查找到的所有可用的库:
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&1&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&2&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&3&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&4&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&5&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&6&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&7&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&8&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&9&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&10&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&11&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&12&/span&
-& SDWebImage (3.5.1)
Asynchronous image downloader with cache support with an UIImageView
pod 'SDWebImage', '~& 3.5.1'
- Homepage: https:///rs/SDWebImage
https:///rs/SDWebImage.git
- Versions: 3.5.1, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.7.4, 2.7, 2.6, 2.5, 2.4
[master repo]
- Sub specs:
- SDWebImage/Core (3.5.1)
- SDWebImage/MapKit (3.5.1)
- SDWebImage/WebP (3.5.1)
注:我省略了两个库,没有全列出。
假设我的Desktop上有一个已经存在的一个项目名称叫做:CocoaPodsTest,首先,进入项目的根目录,并在根目录下创建一个名叫Podfile的文件(没有任何后缀):
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&1&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&2&/span&
$ cd Desktop/CocoaPodsTest/
'进入项目根目录,根据自己项目实际目录'
$ vim Podfile
'创建Podfile文件,你可以选择你自己喜欢的编辑器'
注:vim的简单用法,$
vim fileName创建文件fileName,并打开;按i进入插入模式,输入文本;按esc进入命令模式后,按:wq或ZZ退出并保存。
然后,在Podfile文件中按以下的格式将依赖库的名字列出:
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&1&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&2&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&3&/span&
platform :ios, '6.0'
'平台、版本'
pod 'SDWebImage', '~& 3.5.1'
'开源库名称、版本'
pod 'AFNetworking', '~& 2.0.3'
'开源库名称、版本'
保存Podfile文件后,执行如下安装的命令:
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&1&/span&
$ pod install
当安装命令执行成功后,会输出:
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&1&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&2&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&3&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&4&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&5&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&6&/span&
&span class=&line-number& style=&margin: 0 padding: 0 border: 0 font-family: font-style: font-variant: line-height: vertical-align: color: rgb(88, 110, 117) !&&7&/span&
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (2.0.3)
Installing SDWebImage (3.5.1)
Generating Pods project
Integrating client project
[!] From now on use `CocoaPodsTest.xcworkspace`.
哈哈,看到类似这样的输出就是成功了。你所需要的第三方开源库都下载好了,并且设置好了相应的依赖以及编译参数。在我们以后用的时候一定要记住以下两点:
1. 最后一行是一个警告,提醒我们需要注意:从现在开始,需要通过xxx.xcworkspace打开的我们的项目。而不是之前我们一直用的xxx.xcodeproj
2. 当我们每次修改了Podfile这个文件后,一定要记得执行命令:$
pod install,还可以执行$
pod update来更新类库
用CocoaPods给我们的iOS项目添加依赖库真的太方便了,几个命令就搞定了,我个人建议像我一样还不会使用CocoaPods进行项目依赖的初级开发者,尤其是像我这样刚毕业的本科生,这个工具有必要学会,不能被鄙视,更能提高效率
我的热门文章Cocoapods私有仓库封装过程中的思考
招聘信息:
背景:随着公司相关APP项目的开展,公用框架的创建与维护越发显得迫切起来。因为工作中经常接触使用cocoapods,也知道她其实可以搞定这件事,所以就首当其冲的选择了基于cocoapods的封装方案。Why给工作中封装的组件一个沉淀的地方。为新项目的开展提供高效的支撑。框架代码单独维护,功能点升级更新快捷。一定程度督促自己代码的组织与优化。知识储备搭建的过程大致参考了这篇教程:。教程非常的细致,很赞的分享。其中有几个地方可能会有点疑惑:Podfile中specs引入方式1.:path=>的引入方式会添加到DevelopmentPods中,并且复制整个私有库的文件组织结构(文件夹嵌套关系都会保留),这种引入方式非常适合于私有库的开发阶段,因为这种方式引入的其实就是实际私有库的源文件,在demo项目中通过这种方式引入,充分测试私有库的相关功能会非常方便快捷。对强迫症患者来说可能会觉得有点不完美的地方,就是当specs中包含subspecs的时候,用这种方式引入时,会出现一些多余的文件层次嵌套。。。感兴趣的患者们可以去试一下。。。2.常规的引入方式常规的引入方式这里就不多说了,它走的是另一个极端,会剔除库中的文件组织结构,而简单的划分了源文件与资源文件,如果包含subspecs,只保留子模块名一级的文件层次,模块内部的文件结构将不复存在,这里暂时没有找到合适的解决办法保留原有组织结构。比如上图的结构,发布之后将改变为:子模块划分思路先说结果,大致是按照这个思路进行划分的:1. 网络(剔除具体API调用部分)添加样例包含常用插件(network状态标识等)缓存2. 模型映射统一API调用规则封装公共响应处理逻辑对于错误类型的统一处理3. Hybrid资源的预加载(js, css等)native能力开放4. UIHUDTab侧边栏Nav常用操作下拉上拉Autolayout封装datasource封装常用动画转场5. 安全加密解密6. 统计swizzling添加打点入口日志记录模块封装bug收集分析7. 动态性热部署方案主要基于目前涉及项目主要关注的部分进行了一些拆解,每个模块直接可能存在依赖关系,这块cocoapods也贴心的帮忙搞定了,例如:s.subspec&'APIModule'&do&|ss|
&&&&ss.source_files&=&'Classes/APIModule/**/*.{swift,h,m}'
&&&&ss.dependency&'Moya',&'~>&6.5.0'
&&&&ss.dependency&'HanekeSwift',&'~>&0.10.1'
&&&&ss.dependency&'NetworkActivityIndicator',&'~>&0.1.6'
&&&&ss.dependency&'MonkeyKit/UtilModule'
&&&&ss.dependency&'MonkeyKit/ModelMapperModule'
&&&&ss.dependency&'MonkeyKit/SecurityModule'end框架会根据将来的实际使用情况再进行优化调整,逐渐完善起来。下一步本轮主要是基于基础功能模块的拆分封装,其实对于APP群常用的业务模块也可以做相同的工作,比如登录验证模块或者逻辑的封装等。通过对于公用业务场景的思考,逐渐提炼出可以产品化的地方,然后塞入公用库,将大大提升相关APP群的开发效率与产品质量。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量6265点击量4590点击量4565点击量3500点击量2909点击量2409点击量2381点击量2351点击量2333
&2016 Chukong Technologies,Inc.
京公网安备89相关文章推荐
CocoaPods是iOS,Mac下优秀的第三方包管理工具,类似于java的maven,给我们项目管理带来了极大的方便。
个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们...
制作 CocoaPods 依赖库
字数2220 阅读1053 评论0 喜欢5
学会使用别人的 Pods 依赖库以后, 你一定对创建自己的依赖库很有兴趣吧,现在我们就来尝试一下,以一个简单 ...
使用CocoaPods管理iOS第三方库
【iOS开发】---- SDWebImage支持webp格式的图片
4g时代,流量依然是宝贵的东西。而移动网络传输中,最占流量的一种载体:图片,成为了我们移动开发者不得不关注的一个问题。我们关注的问题,无非是图片体积和质量如何达到一个比较和谐的平衡,希望得到质量不错的...
CocoaPods简介
CocoaPods是一个负责管理iOS项目中第三方开源库的工具。CocoaPods的项目源码在Github上管理。该项目开始于日,在这两年多的时间里,它持续...
以下引用:/blog/ios-cocoapods-dependency-manager.html
一种开发语言发展到一定的程度就会出现相应的依赖管理工具...
iOS做本地依赖项其实是比较麻烦的,做静态库.a和.framework,但是当你用静态库去访问静态库的时候,你的程序就会报错,而且版本管理麻烦。
然后我们就想到用cocoapods做依赖库,由于是公司...
CocoaPods是一个负责管理iOS项目中第三方开源代码的工具。CocoaPods对于iOS项目的作用和npm对于Nodejs项目的作用是一样的。
CocoaPods的安装( Ma...
很多语言都有自己的依赖管理工具,比如说Java语言的Maven,ios的依赖管理工具CocoaPods,开发ios项目会不自觉地用到第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三...
他的最新文章
讲师:Array
讲师:李志伟
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)相关文章推荐
原文地址:Cocoapods系列教程(三)——私有库管理和模块化管理
年前到现在大部分时间都在整理和抽象之前项目的代码,那酸爽,真是够够的。主要是公司产品是做定制版的本需求,而前期对定制的内...
从前端到obj-c有小半年了,文章又快有一年没有更新过了,前几天才把域名续费了3年,感叹第一个三年就这样过去了….所以决定不能再像以前那样懒了,每天坚持把自己的学习都记录下来然后有空的时候整理下发布到...
pod spec lint命令,校验pod的代码和配置时是从git上拉取的代码进行编译;所以如果未创建git,会报以下错误:...
这个必须记录一下, 将自己的第三库上传到cocoapods, 中间检查 .podspec 遇到的一个 error - ERROR | [iOS] unknown: Encountered an unk...
当把CocoaPods生成的workspace移动到上层目录时,需要改下Pods.xcconfig和工程里的一些设置,就通常没什么难度。
当遇到这个问题时...
文章转自:http://blog.csdn.net/zhangao0086/article/details/
当把CocoaPods生成的workspace移动到上层...
pod install 或 update 的时候提示
[!] Unable to find a specification for xxxx
解决方案:把当前 Pod 目录清理一下就行...
解决办法:只需要把当前Pod的目录清理一下就行了。在终端执行以下命令,之后再执行pod install就可以成功的安装好第三方库。
pod repo remove master
pod set...
Cocoapods使用详解
1、代码中包含静态库
s.vendored_libraries = '/Pod/Classes/*.a'
2、ARC工程中部分文件为 MRC
non_arc_files = 'Pod/Class...
他的最新文章
讲师:Array
讲师:李志伟
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 cocoapod 私有库 的文章

 

随机推荐