因为把简书所有的文章删除了,所以这边就补充会原本的一些认为有价值的文章供查阅
CocoaPods 真是每时每刻都可能出现新的坑,所以我又只能更新了....
CocoaPods 能让开发者非常方便的使用第三方类库,不用自己去管理依赖问题,以及非arc等编译条件在mac 系统下调用终端:
-
基本的步骤是
gem install cocoapods -> pod setup -> pod init -> edit Podfile -> pod install -> open xcworksapce
(期间出现对应的问题 就对应解决) -
这里着重解析下pod常用的几个文件夹:
/Users/{yourName}/Library/Caches/CocoaPods
这个位置放着系统的pod git clone成功后的三方库的缓存
大概的逻辑: pod install -> 下载SDWebImage到Caches里面 -> 根据podSpec copy Caches内的库到项目Pods里面进行使用/Users/{yourName}/.cocoapods/repos
这个位置存放着cocoapods的中心索引表,主要得repo 是 master, 也必须要有master才可以让pod进行执行 同时你新建的私有repo也会处于这个位置- 项目文件下的
Pods
根据Podfile生成的文件内容,里面包含了源码
所以在网络极端情况(自己特别难更新的话),终极技能是,直接去复制队友的Pods文件到自己项目文件,然后pod install就行...,或者也可以将队友的Caches文件复制过去,
#安装cocoapods
为了防止gem安装更新失败,因此先替换为国内的淘宝的镜像源,否则在天朝的网络限制中会很慢很慢
请别弄混乱一个东西,这里替换的ruby源的地址,是为了安装cocoapods这个库管理软件,安装目录默认在
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/
, 后面说替换的coding等spec.git,是指替换cocoapods的中心索引表的git地址
gem sources --remove https://rubygems.org/ //等有反应之后再敲入以下命令
// 更新为 ruby-china的镜像, 淘宝镜像已经停止
gem sources -a https://gems.ruby-china.org/
复制代码
检查一下看看
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中心索引表(初始化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](http://upload-images.jianshu.io/upload_images/1111290-fb7f09546d64263c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
复制代码
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后缀的文件,不要点击原来的项目文件
![打开](http://upload-images.jianshu.io/upload_images/1111290-3ae8e3273afdc017.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 至此,已经结束,愉快地使用吧
---
#出现问题总结:
##如果 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
复制代码