笔谈 cocoapods的安装与使用
因为要重构播放器库,所以就需要参考网上的开源项目,在播放器开源项目这块,kxmovie开源项目是值得参考的一个项目。在github下载下来后,运行该工程,发现其用到了cocoapods来管理第三方库,以前我做项目都是将第三方库直接下载然后将源文件导入到工程,这种做法有其好处也存在一定的弊端,好处是便于项目的维护,方便的知道过去使用的第三方库是个什么情况,还可以根据实际需求修改,弊端就是第三方库的更新需要自己下载最新的再将旧的替换(手动更新)。通过cocoapods来管理第三方库,可以获取到最新的第三库将其引用到项目中,而且不需要自己手动去添加该第三方库的依赖库,虽然cocoapods用起来方便,但是也不一定全好,因为项目运行链接第三方库的时候,比如之前自己改过cocoapods引用进来的第三方库,这时就悲剧了,加载的第三方库是重新从网络上获取的,网上一些开发者也提到了,通过cocoapods管理项目中的第三方库不便于项目回滚。所以,是否选择cocoapods要根据实际情况来定。
要使用cocoapods,对于之前没有安装过cocoapods的开发者来说,首先就是要在Mac上安装cocoapods,在Mac终端执行命令 sudo gem install cocoapods,执行结果如下
但是没有发现cocoapods源,因为ruby的软件源rubygems.org使用的亚马逊的云服务,被墙了,需要更新一下ruby的源,使用其他能支持的源---->国内淘宝的源:
gem sources --remove https://rubygems.org/
gem sources -a http://ruby.taobao.org/
gem sources -l
执行上面的命令结果如下:
现在,更新源成功了,可以进行安装了,继续在Mac终端执行命令 sudo gem install cocoapods,执行结果如下:
.............
.............
接下来在Mac终端输入以下命令:pod setup
注意:This process will likely take a while as this command clones the CocoaPods Specs repository
into ~/.cocoapods/ on your computer.
来看看我们安装的cocoapods的版本信息,在Mac终端上执行命令 pod --version,执行结果如下:
OK,cocoapods安装成功了。
若要卸载cocoapods, 就在Mac终端执行命令 sudo gem uninstall cocoapods
osx升级到10.10后,用pod install报错最终解决办法
cocoapods安装好了,接下来就该用它来做事了。使用CocoaPods管理第三方库的例子如下:
使用Xcode,在工程根目录下,新建立一个空白的Podfile文档,然后在里面添加以下内容
platform:ios,'6.0'
pod 'FMDB', '~>
2.0'
pod 'AFNetworking',
'~> 1.1.0'
pod
'JSONKit','~>1.4'
保存,然后配置工程,
在系统终端中,使用cd命令切换到项目根目录下,输入命令: pod install
执行完之后,CocoaPods在工程目录下创建了一个文件夹“Pods”,该文件夹存放所有依赖的库,另外还创建了一个.xcworkspace文件,配置完之后需使用.xcworkspace文件打开工程。
参考文章:CocoaPods安装和使用教程
对于kxmoive这个工程,它使用cocoapods就引用了一个库,对于我而言,就因为引用一个库反复折腾cocoapods,肯定不爽,浪费时间。所以,我就想删掉kxmoive工程中cocoapods的所有相关东西。但是,删除cocoapods后,出现了如下错误:
diff: /../Podfile.lock: No such file or directory diff: /Manifest.lock: No such file or directory error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
我参考文章 从工程中删除Cocoapods,顺利解决了这个问题。对于上面的这个报错,当工程中有使用cocoapods的时候,运行项目也可能会出现这个问题,那就按照报错提示,重新更新pod,即在Mac终端执行pod install,参考文章Xcode工程使用CocoaPods管理第三方库新建工程时出现错误
最新文章
- RobotFrameWork(六)控制流之For循环
- Asp.net MVC过滤器的使用
- ffmpeg总结整理
- python获取命令行变量
- python(24)urlencode和urldecode
- VS 控件命名规范
- 敬爱的GitHub” —— 致GitHub的一封地下信 英文原文:";Dear GitHub…"; An Open Letter to GitHub
- jQuery笔记一
- 【POJ】【2125】Destroying the Graph
- 【Linux高频命令专题(9)】ls
- WM_NCCALCSIZE消息处理详解
- 再分析 返回值加引用&;,const
- 问题-关于 in []使用过程中报错"; Constant expression violates subrange bounds";
- BZOJ1895: Pku3580 supermemo
- java transient关键字和transaction的区别
- 取得网站的IP 地址
- JAVA开发环境搭建 - JDK安装及环境变量配置
- Ali OSS 服务端签名并设置回调,客户端上传文件
- WelcomeActivity【欢迎界面】
- Net MVC使用datatables插件
热门文章
- Feign进行文件上传+表单调用
- Electron 打开开发者工具 devtools
- Katalon studio登陆并进行用户名和密码参数化
- PMP 第7章错题总结
- 实例句柄0x10000000有什么特别之处?What is so special about the instance handle 0x10000000?
- 【NPDP笔记】第三章 新产品流程
- Linux下安装配置rocketmq
- Spring AOP的常用方法
- 029 SSM综合练习05--数据后台管理系统--订单分页查询
- 微信JS从1.0.0升级到1.1.2的一个坑