iOS - CocoaPods 第三方开源框架管理
1、CocoaPods
CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPods 的项目源码在 Github 上管理。该项目开始于 2011 年 8 月 12 日,在这两年多的时间里,它持续保持活跃更新。开发 iOS 项目不可避免地要使用第三方开源库,CocoaPods 的出现使得我们可以节省设置和更新第三方开源库的时间,在 iOS 开发中经常会用到第三方库如 AFNetworking,ASIHttpRequest 等,在使用第三方库时,你除了要导数源码外,但是,集成这些依赖库需要我们手动去配置,还有当这些第三方库发生了更新,还需要手动去更新项目。这就显得非常麻烦。有麻烦自然有解决办法,CocoaPods 就是为了解决这个问题而生的。通过 CocoaPods,我们可以将第三方的依赖库统一管理起来,配置和更新只需要通过简单的几行命令即可完成。
1)安装:
# 查看 Ruby 源 $ gem sources –l # 添加新的 Ruby 源 $ sudo gem sources -a https://ruby.taobao.org/ # 移除现有 Ruby 默认源 $ sudo gem sources -r https://rubygems.org/ # 安装 cocoapods # 苹果系统升级 OS X EL Capitan 后改为:$ sudo gem install -n /usr/local/bin cocoapods $ sudo gem install cocoapods # 设置/更新本地 cocoapods 仓库 $ pod setup2)使用:
# 新建工程,并在终端用 cd 指令打开到工程文件夹内 # 搜索第三方框架 $ pod search 第三方框架 # 新建文件,写入以下内容并保存 $ vim Podfile target '项目名称' do // 最新版本的需要加该句 pod 'AFNetworking', '~> 3.1.0' // 可以直接从搜索到的第三方框架中复制 end # 上一步操作可以直接用下面的指令一步完成 $ echo -e "target '项目名称' do\npod 'AFNetworking', '~> 3.1.0'\nend" > Podfile # 安装/下载第三方框架 $ pod install # 添加/下载第三方框架 pod 'AFNetworking', '~> 3.1.0’ // 升级到最新版本 pod 'SDWebImage', '~> 3.8.1’ // 下载并添加进工程中 $ pod update3)pod 常用命令:
.podspec 文件是 用于初始化本地第三方库的 spec 描述文件,所有的 spec 文件存都存放在 ~/.cocoapods 目录中。 # 设置/更新本地 cocoapods 仓库 $ pod setup # 安装/下载第三方框架 $ pod install # 添加/下载第三方框架 $ pod update # 列出本地 cocoapods 仓库所有可用的第三方框架 $ pod list # 在本地 cocoapods 仓库中搜索名称为 query 的第三方框架 $ pod search query # 更仔细的搜索,该命令不但搜索类库的名称,同时还搜索类库的描述文本,所以搜索速度也相对慢一些。 $ pod search --full query # 更新本地 cocoapods 仓库中第三方框架的描述文件 # pod list 和 pod search 命令只搜索存在于本地 ~/.cocoapods 文件夹的所有第三方框架,并不会连接到远程服务器 $ pod repo update master $ pod repo update --verbose // 更新时显示详细信息 # 创建一个 podspec 文件 $ pod spec create Name.podspec # 注册 trunk # EmailAddr:邮箱地址,userName:用户名,--verbose:输出调试信息 $ pod trunk register EmailAddr 'userName' --verbose # 向服务器查询自己的注册信息 $ pod trunk me 输出如下信息就表示注册成功: - Name: QianChia - Email: jhqian0228@icloud.com - Since: July 17th, 06:26 - Pods: - QConnectionDownloader - QFormData - QHashString - QSessionDownloader - QWebImage - Sessions: - July 17th, 06:26 - November 23rd, 01:33. IP: 43.225.238.143 # 验证 podspec 文件是否合法 $ pod lib lint Name.podspec # 通过 trunk 推送 podspec 文件 $ pod trunk push Name.podspec # Usage: $ pod COMMAND CocoaPods, the Cocoa library package manager. # Commands: + cache Manipulate the CocoaPods cache + deintegrate Deintegrate CocoaPods from your project + env Display pod environment + init Generate a Podfile for the current directory + install Install project dependencies according to versions from a Podfile.lock + ipc Inter-process communication + lib Develop pods + list List pods + outdated Show outdated project dependencies + plugins Show available CocoaPods plugins + repo Manage spec-repositories + search Search for pods + setup Setup the CocoaPods environment + spec Manage pod specs + trunk Interact with the CocoaPods API (e.g. publishing new specs) + try Try a Pod! + update Update outdated project dependencies and create new Podfile.lock # Options: --silent Show nothing --version Show the version of the tool --verbose Show more debugging information --no-ansi Show output without ANSI codes --help Show help banner of specified command4)常见问题:
问题 1:
Error fetching http://ruby.taobao.org/: bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz) 解决方案:把安装流程中 $ gem sources -a http://ruby.taobao.org/ 改为 $ gem sources -a https://ruby.taobao.org/问题 2:
ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod 解决方案:苹果系统升级 OS X EL Capitan 后会出现的插件错误,将安装流程中的 $ sudo gem install cocoapods 改为 sudo gem install -n /usr/local/bin cocoapods问题 3:
ERROR: Error installing cocoapods: activesupport requires Ruby version >= 2.2.2. 解决方案:输入 $ ruby -v 查看 ruby 版本:ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15], 版本过低,使用 RVM 对 Ruby 进行升级。问题 4:
[!] Unable to satisfy the following requirements: - `AVOSCloud (~> 3.1.6.3)` required by `Podfile` Specs satisfying the `AVOSCloud (~> 3.1.6.3)` dependency were found, but they required a higher minimum deployment target. 解决方案:安装流程中的 Podfile 文件中 platform:ios, ‘6.0’ 后边的 6.0 是平台版本号 ,一定要加上。问题 5:
[!] The dependency `AFNetworking (~> 3.1.0)` is not used in any concrete target. 解决方案:百度上很多旧版本输入的类容: platform :ios, '8.0' pod 'AFNetworking', '~> 2.0' 现在版本升级官方给的文档是: platform :ios, '8.0' target '项目名称' do pod 'AFNetworking', '~> 3.1.0' end问题 6:
[!] Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice. 解决方案:不要使用文本编辑去编辑 Podfile,使用 Xcode 编辑,或者使用终端敲命令去编辑。问题 7:
/usr/local/bin/pod update env: ruby_executable_hooks: No such file or directory 在 Xcode 的 CocoaPods 插件中使用 pod update 出现以上提示。 解决方案:在终端里输入 $ gem env 找到 SHELL PATH,修改 Xcode 的 cocoapods 插件里 GEM_PATH 选项为上面得到的路径, 挨着试试总会成功的。问题 8:
有一些库编译时候会有警告。但是作为一个有洁癖的人呢不想看见这些。 解决方案:可以在 platform :ios, ‘x.0’ 的后面加入这句,这样编译这些第三方库的时候就没有那些烦人的小警告了。 inhibit_all_warnings!问题 9:
但是有一个库 ReactiveCocoa。当关闭所有警告的时候。它就编译不过了。 解决方案:对他单独设置打开编译警告就好了。 pod 'ReactiveCocoa', '~> 2.1.8', :inhibit_warnings => true问题 10:
如果有多个 Targets 需要 pod 的库怎么办。 解决方案:Podfile 的头部加入以下代码,AAAAA 和 BBBBB 都是你 target 的名字,这样不同的 target 都会有 pod 库了。 主要是用来解决 Unit Test 需要 pod install 一些库的问题。 link_with ['AAAAA', 'BBBBB']问题 11:
[!] The `master` repo is not a git repo. 原因:修改了 Xcode.app 的路径后,找不到 Xcode 解决:终端执行即可 sudo xcode-select -switch /Applications/Developer/Xcode.app(Xcode 实际路径)问题 12:
[!] The specified path `QExtension.podspec` does not point to an existing podspec file. 原因:没有进入到 .podspec 文件所在的文件夹 解决:cd 进入到 .podspec 文件所在的文件夹
2、gem 常用命令
# 查看 Ruby 源
$ gem sources –l
# 添加源
$ sudo gem sources -a https://ruby.taobao.org/
# 删除源
$ sudo gem sources -r https://rubygems.org/
# gem 自身升级
$ sudo gem update –system
# 查看版本
$ gem --version
# 清除过期的 gem
$ sudo gem cleanup
# 安装包
# 苹果系统升级 OS X EL Capitan 后改为:$ sudo gem install -n /usr/local/bin cocoapods
$ sudo gem install cocoapods
# 删除包
$ gem uninstall cocoapods
# 更新包
$ sudo gem update
# 列出本地安装的包
$ gem list
3、Ruby 源
“源” 相当于安装软件的服务器。
国外的源地址:https://rubygems.org/ 速度非常慢慢
国内的源地址:https://ruby.taobao.org/ 速度快
# 查看当前 ruby 版本
$ ruby -v
# 列出已知的 ruby 版本,需安装 RVM 管理器
$ rvm list known
# 升级 Ruby 版本,需安装 RVM 管理器
$ rvm install 2.3.0
4、RVM 管理器
RVM:Ruby Version Manager,Ruby 版本管理器,包括 Ruby 的版本管理和 Gem 库管理(gemset)
# 安装 RVM:
$ curl -L get.rvm.io | bash -s stable
$ source ~/.bashrc
$ source ~/.bash_profile
# 查看 RVM 版本
$ rvm -v
5、安装 Xcode 插件管理器
curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh
安装完 Xcode 插件管理器后,在 Xcode 的菜单 Window 中多出一个 Package Manager 选项,用于管理 Xcode 插件的安装与卸载。
如果安装了 CocoaPods,在 Xcode 的菜单 Product 中多出一个 CocoaPods 选项,用于管理工程中用到的第三方框架。
iOS - CocoaPods 第三方开源框架管理的更多相关文章
- iOS常用第三方开源框架和优秀开发者博客等
博客收藏iOS开发过程好的开源框架.开源项目.Xcode工具插件.Mac软件.文章等,会不断更新维护,希望对你们有帮助.如果有推荐或者建议,请到此处提交推荐或者联系我. 该文档已提交GitHub,点击 ...
- iOS开发-常用第三方开源框架介绍
iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网 ...
- iOS超全开源框架、项目和学习资料汇总--数据库、缓存处理、图像浏览、摄像照相视频音频篇
iOS超全开源框架.项目和学习资料汇总--数据库.缓存处理.图像浏览.摄像照相视频音频篇 感谢:Ming_en_long 的分享 大神超赞的集合,http://www.jianshu.com/p/f3 ...
- IOS-常用第三方开源框架介绍
iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 时间:2015-05-06 16:43:34 阅读:533 评论:0 收藏:0 [点我收藏+] ...
- iOS超全开源框架、项目和学习资料汇总(5)AppleWatch、经典博客、三方开源总结篇
完整项目 v2ex – v2ex 的客户端,新闻.论坛.apps-ios-wikipedia – apps-ios-wikipedia 客户端.jetstream-ios – 一款 Uber 的 MV ...
- 【转】iOS超全开源框架、项目和学习资料汇总
iOS超全开源框架.项目和学习资料汇总(1)UI篇iOS超全开源框架.项目和学习资料汇总(2)动画篇iOS超全开源框架.项目和学习资料汇总(3)网络和Model篇iOS超全开源框架.项目和学习资料汇总 ...
- Android的SwipeToDismiss第三方开源框架模拟QQ对话列表侧滑删除,置顶,将头像图片圆形化处理。
<Android SwipeToDismiss:左右滑动删除ListView条目Item> Android的SwipeToDismiss是github上一个第三方开源框架(github ...
- 第三方开源框架的下拉刷新列表(QQ比较常用的)。
PullToRefreshListView是第三方开源框架下拉刷新列表,比较流行的QQ 微信等上面都在用. 下载地址(此开源框架于2013年后不再更新) 点此下载 package com.lixu.k ...
- iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)--(转)
图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. 下 ...
随机推荐
- js弹窗
常用人JS弹窗,lhgDialog 4.20
- 初探XML
1.XML是什么? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签 ...
- 20145209&20145309信息安全系统设计基础实验报告 (3)
实验内容.步骤与体会: 实验过程的理解,实验指导书中知识点的理解. (1)为什么在双击了GIVEIO和JTAG驱动安装文件后还需要手动进行配置? 因为安装文件只是将驱动文件释放了出来,并没有在系统中将 ...
- 【C51】UART串口通信
我们常需要单片机和其他模块进行通信,数据传输,常用的方式就是串口通信技术. 常用来 单片机<-->电脑, 单片机<-->单片机之间通信. 串行通信 versus 并行通信 并 ...
- Array与ArrayBuffer
一.概述 二:Array使用 1.建立方式三种(数组里可以有不同的数据类型) 2.Array的简单使用 三:ArrayBuffer的简单使用 1.ArrayBuffer建立 导包 2.添加元素(+=) ...
- Selenium2学习-038-firefox、webdriver版本不对称问题解决:org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055
今天有个朋友在群里问,为何脚本运行不通过,其脚本操作步骤简单描述如下: 1.启动火狐浏览器 2.打开百度 3.查询框输入关键字 4.点击按钮[百度一下] 脚本挺简单的,其给出的应用报错信息如下所示: ...
- centos 修改网卡名为eth0
centos7和centos6的命名规则不同,centos6网卡名由udev控制 网卡名以eth开头然后第一块网卡叫eth0第二块网卡叫eth1,然后centos7的网卡命名规则截然不同 centos ...
- Mac系统安装jdk和maven
一.安装jdk 1.查看java链接到了哪里: 进入到相应的目录:cd /usr/bin 查看java链接到了哪里: ls -l java lrwxr-xr-x 1 root wheel 74 ...
- change和onchange触发为什么不立马生效?
change和onchange触发了,为什么不立马生效?那是因为他们本身不是当文本改变就立马触发的事件,而是当文本改变了,blur离开了表单才触发. 如果要加上触发请结合keyup,keydown,o ...
- Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析
在前两文中,我们分析了Activity组件的窗口对象和视图对象的创建过程.Activity组件在其窗口对象和视图对象创建完成之后,就会请求与WindowManagerService建立一个连接,即请求 ...