CocoaPods介绍与使用(转)
一.介绍
(1) CocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程链接起来,供我们开发使用。
(2) 使用CocoaPods的目的是让我们能自动化的,集中的,直观的管理第三方开源库。
(3) CocoaPods是用Ruby实现的,想要使用它首先需要有Ruby的环境。
(4) CocoaPods是以Ruby gem包的形式被安装。
(5) CocoaPods的原理是将所有的依赖库都放倒另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移动到了Pods项目中。Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。
二.使用
1.CocoaPods的安装
需要用到ruby,Mac系统自带ruby,但如果不是最新的系统,最好更新一下。
ruby的软件源rubygems.org被墙了,所以先换一下源,命令行下依次执行3条命令
$ gem sources –remove https://rubygems.org/
$ gem sources -add htts://gems.ruby-china.com/
$ gem sources -l
然后升级gem
$ sudo gem update -–system
完了就开始安装CocoaPods
$ sudo gem install cocoapodspod setup
出现Setting up CocoaPods master repo,半天没有任何反应。原因无他,因为那堵墙阻挡了cocoapods.org。。。
gitcafe和oschina都是国内的服务器,可以用它们CocoaPods索引库的镜像:
$ pod repo removemaster pod repo add master https://gitcafe.com/akuandev/Specs.git
$ pod repo update
如果想用oschina的镜像也可以把第二条命令 换成 http://git.oschina.net/akuandev/Specs.git 即可
第二条命令执行的时候会比较耗时,这个时候要去把整个specs仓库clone一下,下载到 ~/.cocoapods里;
cd 到该目录里,用du -sh *命令来查看文件大小,每隔一会看看,最终大小是190多M。
2.CocoaPods的使用
(1) 在终端shell中cd 来到你要管理的项目,运行:pod install 你的工程就多了个xworkspace文件夹,以后用这个打开工程
(2) 添加第三方库
搜索一个开源库 podsearchAFNetworking在工程目录里建一个Podfile文件 vim Podfile
内容按这个格式来
platform :ios,’6.0’
pod ‘RegexKitLite’, ‘~> 4.0’
pod ‘ASIHTTPRequest’, ‘~> 1.8.’
pod ‘SDWebImage’, ‘~> 3.7.’
pod ‘FMDB’, ‘~> 2.3’
3.CocoaPods的使用心得
(1) 最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,命令如下:
$ pod install –verbose –no-repo-update
$ pod update –verbose –no-repo-update
podinstall 只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。但是 pod update会更新所有的类库,获取最新版本的类库。每次用$ pod update就行。
(2) 安装一个xcode插件管理工具 http://alcatraz.io,执行curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh 完了打开xcode->window->package manger 搜cocoapods安装,方便操作。
(3) 工程在模拟器上编译报错,不支持i386,Cocoapods确实还不支持64位模拟器,解决办法:
http://stackoverflow.com/questions/19213782/undefined-symbols-for-architecture-arm64
其实就2条,1.build active architecture only 在debug的时候设置成YES,不要在release的时候用模拟器 2.other linker flags 加一个 $(inherited)
(4) 用到svn,git多人协作的话,Pods/这个文件夹不要上传,…/Pods/Pods.xcodeproj …Pods/Target Support Files/这些每次编译都会改动从而引起合并代码的时候冲突
更多坑可以看wiki,例如 https://github.com/CocoaPods/CocoaPods/issues/2190
其他坑各位可以补充。。。
CocoaPods介绍与使用(转)的更多相关文章
- CocoaPods介绍。如何安装Ruby环境,如何下载和安装CocoaPods?
CocoaPods介绍? 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其 ...
- Xcode7安装CocoaPods
一.CocoaPods介绍以及优点 CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具.该项目源代码在Github上管理. 通过 CocoaPods,能够非常方便的 ...
- iOS工具】rvm、Ruby环境和CocoaPods安装使用及相关报错问题解决
〇.前言 <p>在iOS开发中 CocoaPods作为库依赖管理工具就是一把利器. 有了 CocoaPods则无需再通过拖 第三方库及第三方库所依赖的 framework静态库到项目中等麻 ...
- iOS CocoaPods一些特别的用法 指定版本、版本介绍、忽略警告
简介 介绍一些CocoaPods一些特别的用法 CocoaPods github地址 CocoaPods 官方地址 1. 指定第三方库版本 1. 固定版本 target 'MyApp' do use_ ...
- CocoaPods 的安装和使用介绍
CocoaPods 的安装和使用介绍 安装 安装方式异常简单 , Mac 下都自带 ruby,使用 ruby 的 gem 命令即可下载安装: 1 2 $ sudo gem install cocoap ...
- CocoaPods的简单介绍及安装和使用
CocoaPods的简单介绍及安装和使用 一.CocoaPods是什么? 当你开发iOS应用时,会常常使用到非常多第三方开源类库.比方JSONKit.AFNetWorking等等. 可能某个类库又 ...
- CocoaPods常用终端命令及Profile文件简单介绍
Pod常用终端命令 pod init 创建pod文件 pod install 开始安装第三方框架,如果网上有更新,会安装最新的 pod install --verbose--no-repo-updat ...
- 项目总结(二)--- CocoaPods的简单介绍与使用
先谈下,我们为什么要使用CocoaPods,它能为我们做什么吧. 所有开发过iOS应用的小伙伴们都知道,在整个项目中,第三方库的引用必不可少(特别感谢那些优秀第三方开源库的作者,给我们提供了多大的便捷 ...
- iOS开发:bitcode介绍和使用cocoapods出现“target overrides the `OTHER_LDFLAGS`……”的解决方案
在开发中,不免需要引入第三方库,但是因为库的问题,会发生很多错误.如: 1.因为一些第三方库不包含bitcode就会报错: 一次使用xcode7.1时,发现编译失败,报错信息: umeng messa ...
随机推荐
- fullpage的使用以及less, Sass的属性和JQuery自定义插件的声明和使用
使用fullpage的步骤 1 导入JQuery.js fullpage,js fullpage.css 2 组建网页布局,最外层id="fullpage" 单页class=& ...
- flask-SQLAlchemy的ORM
1.创建表 import datetime from sqlalchemy import create_engine from sqlalchemy.ext.declarative import de ...
- git stash压栈
git stash 用于暂存当前正在进行的工作,如想pull最新的代码,又不想加新的commit,或者为了fix一个紧急的bug,先stash,返回到自己上一个commit. 修改完bug后,再执行g ...
- Java Timer定时器原理
做项目很多时候会用到定时任务,比如在深夜,流量较小的时候,做一些统计工作.早上定时发送邮件,更新数据库等.这里可以用Java的Timer或线程池实现.Timer可以实现,不过Timer存在一些问题.他 ...
- jQuery之设置元素内容(移动和复制元素,使用append(),appendTo()方法)
jQuery之设置元素内容(移动和复制元素,使用append(),appendTo()方法) ---------- 如果想把内容添加到现有内容末尾,可以利用append()命令.append()命令语 ...
- Eclipse Equinox DS(Declarative Service)
Equinox DS's METE-INF/MANIFEST.MF Manifest-Version: 1.0 Lazy-ManifestFilter: (Service-Component=*) B ...
- Android 自定义View之自绘控件
首先要提前声明一下,我对于自定义View的理解并不是很深,最近啃了几天guolin博主写的关于自定义View的博客,讲的非常棒,只不过涉及到源码和底层的一些东西,我自己就懵逼了,目前只是会了关于自定义 ...
- log4j2简单使用
http://www.cnblogs.com/lzb1096101803/p/5796849.html 如果是基于的slf4j,看这篇文章去配置 http://blog.csdn.net/neosmi ...
- 什么是PDM?
PDM的含义 PDM的中文名称为产品数据管理(Product Data Management). PDM是一门用来管理所有与产品相关信息(包括零件信息.配置.文档.CAD文件.结构.权限信息等)和所有 ...
- 模拟精灵 z
反复做历史测试,重大改进了卖出的判断模式.此项改进能使系统收益每年增加5%-左右 重新整合了几种买法,使之在熊市更加谨慎.对大盘的反转反应更为灵敏 适当加大了仓位 单独处理有重大机会的股票 加入多种短 ...