文档章节

搭建CocoaPods的过程以及遇见的问题

HxLemon
 HxLemon
发布于 2016/01/28 15:26
字数 1236
阅读 28
收藏 0

CocoaPods 简介

每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm。随着 iOS 开发者的增多,业界也出现了为 iOS 程序提供依赖管理的工具,它的名字叫做:CocoaPods。

CocoaPods项目的源码 在 Github 上管理。该项目开始于 2011 年 8 月 12 日,经过多年发展,现在已经成为 iOS 开发事实上的依赖管理标准工具。开发 iOS 项目不可避免地要使用第三方开源库,CocoaPods 的出现使得我们可以节省设置和更新第三方开源库的时间。

对于这些开源库通常需要依赖系统的一些 framework,需要我们手工地将这些 framework 分别增加到项目依赖中,比如通常情况下,一个网络库就需要增加以下 framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。 对于某些开源库,我还需要设置-licucore或者 -fno-objc-arc等编译参数 管理这些依赖包的更新。 这些体力活虽然简单,但毫无技术含量并且浪费时间。在使用 CocoaPods 之后,我只需要将用到的第三方开源库放到一个名为 Podfile 的文件中,然后执行pod install。 CocoaPods 就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数。

CocoaPods 安装过程

因为Mac系统自带ruby,使用ruby的gem命令即可安装

$ sudo gem install cocoapods
$ pod setup

要注意的是,如果gem版本太老,则会出现问题,更新一下gem版本就OK

$ sudo gem update --system

另外,ruby 的软件源 https://rubygems.org 因为使用的是亚马逊的云服务,需要更新一下 ruby 的源,使用如下代码将官方的 ruby 源替换成国内淘宝的源(翻墙可忽略):

$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l

还有一点需要注意,pod setup在执行时,会输出Setting up CocoaPods master repo,但是会等待比较久的时间。这步其实是 Cocoapods 在将它的信息下载到 ~/.cocoapods目录下,如果你等太久,可以试着 cd 到那个目录,用du -sh *来查看下载进度。亦或可以通过建立CocoaPods镜像来提高速度

使用 CocoaPods 的镜像索引

所有的项目的 Podspec 文件都托管在https://github.com/CocoaPods/Specs。第一次执行pod setup时,CocoaPods 会将这些podspec索引文件更新到本地的 ~/.cocoapods/目录下,这个索引文件比较大,有 80M 左右。所以第一次更新时非常慢。搜索了其他办法,发现一位叫akinliu 的朋友在 gitcafe 和 oschina 上建立了 CocoaPods 索引库的镜像,因为 gitcafe 和 oschina 都是国内的服务器,所以在执行索引更新操作时,会快很多。如下操作可以将 CocoaPods 设置成使用 gitcafe 镜像:

$pod repo remove master
$pod repo add master https://gitcafe.com/akuandev/Specs.git
$pod repo update

上方的链接可换成http://git.oschina.net/akuandev/Specs.git即可使用oschina上的CocoaPods镜像

使用 CocoaPods

1.打开终端,cd到项目总目录(使用CocoaPods的项目) 2.新建Podfile文件,终端输入 vim Podfile,并将依赖的库名字依次列在文件中即可

platform :ios
        pod 'JSONKit',   '~>1.4'
        pod 'Reachability',  '~> 3.0.0'

3.然后按Esc,并且输入“ :”号进入vim命令模式,然后在冒号后边输入wq 4.在终端输入执行命令 pod install 5.下载完成后,注意以下两点 使用 CocoaPods 生成的 .xcworkspace 文件来打开工程,而不是以前的 .xcodeproj 文件。 每次更改了 Podfile 文件,你需要重新执行一次pod update命令。

遇到的一个坑--!

安装完成后,笔者发现终端上有一行提示,大意就是正在使用的CocoPods版本不是最新的,然后给你提示了一个命令,直接复制即可,就是下面这个: sudo gem install cocoapods --pre 安装后,再次执行pod update命令,出现错误 输入图片说明 查阅了一些资料以后,发现最新的CocoaPods版本需要用以下格式创建Podfile:

platform :ios, '8.0'
 target 'MyApp' do
  pod 'AFNetworking', '~> 2.6'
  pod 'ORStackView', '~> 3.0'
  pod 'SwiftyJSON', '~> 2.3'
 end

把projectName换成自己的project名称,再次执行pod update,OK,顺利执行!

遇到的另一个坑 !--

使用CocoaPods下载完所需要的第三方库后,import导入头文件时并没有提示,但是手动写也没有错误,但是缺少提示确实使用不便,而且有写错的风险。查阅资料之后发现,只要把pods目录添加到用户头文件检索的路径即可: 1.选择工程的 Target -> Build Settings 菜单,找到\”User Header Search Paths\”设置项 2.新增一个值"$(PODS_ROOT)",并且选择\”recursive\”,这样xcode就会在项目目录中递归搜索文件

© 著作权归作者所有

HxLemon
粉丝 1
博文 8
码字总数 3706
作品 0
朝阳
程序员
私信 提问
Mac 安装Homebrew 以及brew update

0、前提"安装CocoaPods 因为最近两天我更换了ssd固态硬盘和重装了 macOS Sierra 10.12系统,需要重新安装cocoaPods Xcode8 macOS Sierra 10.12 安装CocoaPods 我在安装过程pod setup遇到问题...

朝雨晚风
2016/12/20
0
0
使用 CocoaPods 管理依赖库

文本首发于Ryan’s Zone 本篇内容将介绍Mac和iOS开发中必备的一个依赖库管理工具CocoaPods。 CocoaPods是什么 在iOS开发中势必会用到一些第三方依赖库,比如大家都熟悉的ASIHttpRequest、AFN...

孙启超
2014/04/13
182
0
pod始终不成功,不知道怎么回事,一直这样显示

Setting up CocoaPods master repo Cloning spec repo `master` from `https://github.com/CocoaPods/Specs.git` (branch `master`) $ /usr/bin/git clone https://github.com/CocoaPods/Spe......

liuweiqian
2016/10/13
442
0
ios-项目组件化(准备工作)

 最近公司业务不是很忙,自己抽出时间对现有的开发项目准备进行组件化模式开发;由于公司项目架构在开始搭建的时候没有用到cocoapods进行三方包管理,三方包的工程环境都是需要手动去完成配...

Peter_Zhang
2018/05/23
0
0
CocoaPods安装遇到的问题

--------------- 原文地址:传送门 第一步:sudo gem update --system 如果失败则用这条语句 sudo gem install -n /usr/local/bin cocoapods 如果是最新版的会出现Latest version currently ...

qq_28379951
2018/04/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS盒子模型

一、什么叫框模型 页面元素皆为框(盒子) 定义了元素框处理元素内容,内边距,外边距以及边框的计算方式 二、外边距 围绕在元素边框外的空白距离(元素与元素之间的距离) 语法:margin,定...

wytao1995
今天
4
0
Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部