由于把简书全部的文章删除了,因此这边就补充会本来的一些认为有价值的文章供查阅ios
CocoaPods 真是每时每刻均可能出现新的坑,因此我又只能更新了....git
CocoaPods 能让开发者很是方便的使用第三方类库,不用本身去管理依赖问题,以及非arc等编译条件在mac 系统下调用终端:github
基本的步骤是 gem install cocoapods -> pod setup -> pod init -> edit Podfile -> pod install -> open xcworksapce
(期间出现对应的问题 就对应解决)xcode
这里着重解析下pod经常使用的几个文件夹:缓存
/Users/{yourName}/Library/Caches/CocoaPods
这个位置放着系统的pod git clone成功后的三方库的缓存/Users/{yourName}/.cocoapods/repos
这个位置存放着cocoapods的中心索引表,主要得repo 是 master, 也必需要有master才可让pod进行执行 同时你新建的私有repo也会处于这个位置Pods
根据Podfile生成的文件内容,里面包含了源码因此在网络极端状况(本身特别难更新的话),终极技能是,直接去复制队友的Pods文件到本身项目文件,而后pod install就行...,或者也能够将队友的Caches文件复制过去,ruby
#安装cocoapodsbash
为了防止gem安装更新失败,所以先替换为国内的淘宝的镜像源,不然在天朝的网络限制中会很慢很慢网络
请别弄混乱一个东西,这里替换的ruby源的地址,是为了安装cocoapods这个库管理软件,安装目录默认在
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/
, 后面说替换的coding等spec.git,是指替换cocoapods的中心索引表的git地址ssh
gem sources --remove https://rubygems.org/ //等有反应以后再敲入如下命令
// 更新为 ruby-china的镜像, 淘宝镜像已经中止
gem sources -a https://gems.ruby-china.org/
复制代码
检查一下看看curl
gem sources -l
*** CURRENT SOURCES *** https://gems.ruby-china.org/
复制代码
使用gem安装cocoapods
sudo gem install cocoapods //1.0正式版本已经发布,规则有一点的变化
复制代码
若是gem出现错误 ** Unable to resolve dependencies: cocoapods requires cocoapods-core (= 0.35.0), claide (~> 0.7.0), xcodeproj (~> 0.20.2), cocoapods-downloader (~> 0.8.0) **
先更新gem而后从新开始
sudo gem update --system //没什么问题就不要更新这个了,容易出现问题,更新后请从新设置下镜像源
复制代码
** sudo gem install cocoapods 出现 Operation not permitted - /usr/bin/xcodeproj**
sudo gem install -n /usr/local/bin cocoapods
复制代码
//若是还有问题 请看下面
若是pod setup能够将github的代码下载得动,那你就不用去折腾了
specs的意思: 规格, 说明书
全部第三方库
pod lib lint
经过后,都会push到这个Specs.git
里面,并且cocoapods
软件在pod install
,也是去Specs.git
(即repo
里面的master
)查找对应的版本信息的,所以我称之为中心索引表
cocospod就是一个中心化的工具,相对而言carthge是去中心化的,所以carthge 不能进行search,或者查看下各个库支持到哪一个版本,只能去三方的git库自行查看
pod setup //会将Specs.git的代码下载到~/.cocoapods/repo/master
//若是仍是太慢,尝试下
pod install --verbose
复制代码
pod setup内部实现 /Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/command/setup.rb
def run
UI.section 'Setting up CocoaPods master repo' do
if master_repo_dir.exist?
set_master_repo_url
set_master_repo_branch
update_master_repo
else
add_master_repo
end
end
UI.puts 'Setup completed'.green
end
// 省略一些代码 ....
def self.read_only_url
'https://github.com/CocoaPods/Specs.git'
复制代码
//这里默认写了加载索引表的地址, 因此 若是 pod repo add master https://git.coding.net/CocoaPods/Specs.git 这句失败的话 //能够尝试直接把这个url改成你要更换的新的git 地址,并且改为你要用的ssh可能更加好
end
复制代码
- **若是setup很慢甚至卡住**
> (github自己就慢,并且Spec.git的文件数量甚多(1069459+)),致使300+m的git库特别难下载成功)
为了`pod install / update` 的时候加快速度,specs仓库镜像换成coding上的镜像或者是 oschina 上的镜像因此建议先更换数据源
复制代码
pod repo remove master
// 这里执行的是,用国内的oschina/coding 去提供git下载,作一下中转,让速度稍微快点,可是如今发现上面的Specs.git大多都不更新了... // 后面要自力更生了 pod repo add master https://git.oschina.net/akuandev/Specs.git
> 若是提示失败或者setup不成功,方案有两种:
- ###1) 手动将代码clone下来 【该方法比较有效】
- 出现 [!] To setup the master specs repo, please run `pod setup`.
这些git若是没更新的话,就先去oschina 搜索 `Specs` 来找一些更新的,或者也能够本身作一些中转(新建项目,导入git url,把cocoapods官方的导入到本身的项目中,自行更新... 你要写个脚本,天天更新也行...)

复制代码
git clone https://git.oschina.net/yqszxx/Specs ~/.cocoapods/repos/master
//或者使用ssh的方式,总以为ssh的方式会快点,https老是卡住 git clone git@git.coding.net:yqszxx/Specs.git ~/.cocoapods/repos/master
pod setup //务必在手动下载代码后执行一次,执行后 Setup completed
//在执行 pod install --verbose --no-repo-update //避免去更新了
> 若是使用oschina 的 https git clone不成功的话,建议到`git.oschina.net`中添加ssh key,换ssh方式下载源码
复制代码
git clone git@git.oschina.net:akuandev/Specs.git ~/.cocoapods/repos/master
---
#Cocoapods 具体使用方法:
直接在须要加入cocoapods项目的根目录新建Podfile文件
复制代码
$pod init //会生成模板的Podfile文件 //或者手动建立 $touch Podfile
##编辑 Podfile文件
复制代码
platform :ios pod 'AFNetworking'
###单独某个target依赖pod
> 在1.0中要求必须指定target了
复制代码
target 'XXXTarget' do pod 'AFNetworking' pod 'Masonry' end
而后再执行 pod setup 便可之后每次更改 Podfile文件 则执行 pod update 便可若是在初始化的时候出现:若是安装后出现
复制代码
[!] The platform of the target Pods
(iOS 4.3) may not be compatible with Reachability (3.2)
which has a minimum requirement of iOS 6.0 - OS X 10.8.
则修改 Podfile 为
复制代码
platform :ios, '6.0'
update 后若是出现大量提示
复制代码
错误 target overrides the OTHER_LDFLAGS
...
则项目中Building setting 设置中 搜索**`Other Linker Flags`**的地方,添加一条
复制代码
$(inherited)
之后打开项目点击xcworksapce后缀的文件,不要点击原来的项目文件

- 至此,已经结束,愉快地使用吧
---
#出现问题总结:
##若是 pod update / pod install 命令执行过慢
(首次运行的时候不要)执行pod install仍是pod update都卡在了Analyzing dependencies不动缘由在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数能够省略这一步,而后速度就会提高很多。
加参数的命令以下:
复制代码
pod install --verbose --no-repo-update pod update --verbose --no-repo-update
##gem install
> 出现 ERROR: While executing gem ... (Gem::FilePermissionError)
解决方法:
复制代码
sudo gem install -n /usr/local/bin cocoapods
---
或者:
复制代码
$ mkdir -p $HOME/Software/ruby $ export GEM_HOME=$HOME/Software/ruby $ gem install cocoapods //打印 $ export PATH=$PATH:$HOME/Sofware/ruby/bin $ pod --version
或者从新安装rvm
复制代码
//Install Homebrew:(已经装过就不用了) $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" // Install RVM: $ \curl -sSL https://get.rvm.io | bash -s stable --ruby $ gem install cocoapods
##出现 Invalid \\`Podfile` file
复制代码
[!] Invalid Podfile
file: incompatible character encodings: UTF-8 and ASCII-8BIT. Updating CocoaPods might fix the issue.
这是编码的问题,有两种缘由,
1.你的设备确实不支持utf8,
2.你自己录入文本有问题查看编码
复制代码
localhost:xib cty$ locale
执行命令后出现
复制代码
LANG="zh_CN.UTF-8"LC_COLLATE="zh_CN.UTF-8"LC_CTYPE="zh_CN.UTF-8"LC_MESSAGES="zh_CN.UTF-8"LC_MONETARY="zh_CN.UTF-8"LC_NUMERIC="zh_CN.UTF-8"LC_TIME="zh_CN.UTF-8"LC_ALL=
发现都是zh,强制设置一下
复制代码
localhost:xib cty$ export LC_ALL=en_US.UTF-8 localhost:xib cty$ export.UTF-8
再检查一下
复制代码
LANG="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_CTYPE="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_ALL="en_US.UTF-8"
好像好了,继续pod install吧
复制代码
[!] Invalid Podfile
file: incompatible character encodings: UTF-8 and ASCII-8BIT. Updating CocoaPods might fix the issue.
问题依然把全部可能的配置都试一遍
复制代码
gem install rails
而后
复制代码
gem install rdoc
而后
复制代码
gem install nokogiri --no-ri --no-rdoc
这些都设置完通常不会出现问题了,再有问题,多是文本录入的问题2的解决办法,若是你是手动输入的这个须要注意,copy别人的也要检查一下打开键盘偏好设置设置单引号格式,固然冒号我还没找到怎么设置,通常错误会提示给你哪写错了这里再也不提示utf8的错误了,输入法的错误,可是我切换了半天设置了半天仍是没解决冒号,只能吧
复制代码
The master
repo requires CocoaPods 0.18.1 -
这个错误是在升级阶段出现的,升级
复制代码
gem update cocoapods
##使cocopods管理开源库编译出现Library not found for -lPods问题的解决方法
+ 点击菜单栏上 Product > Edit Scheme
+ 选择Build
+ 加入Pods static library, 而且保证 pods 处于第一个位置
+ Clean and build 项目
##若是在导入头文件的时候发现没法自动补全,或者PCH文件中提示File not found
在User headers search path(在Project 和 Target 都修改)中
复制代码
${SRCROOT} --右侧选择recursive
##Jenkins 脚本打包中出现 uft-8问题
> [33mWARNING: CocoaPods requires your terminal to be using UTF-8 encoding.
在pod install 以前执行
复制代码
export LC_ALL="en_US.UTF-8" pod install --no-repo-update
复制代码