自从升级了MAC OS10.11系统以后,一般的安装Cocoapods竟然失败了,我也是醉了,在网上查了好久,终于被我找到了破解之法:
1.在终端Terminal中输入 $ sudo gem install cocoa pods ,竟然出错了
ERROR:While executing gem ...(Errno::EPERM)Operation not permitted -
/usr/bin/xcodeproj
解决方法 :
$ sudo gem install -n/usr/local/bin cocoa pods (非常重要)
2.一个小问题:引入第三方库后找不到头文件
解决方法:在项目中的Targe-Build Settings-Search Paths -User Header Search Paths 中添加
${SRCROOT} 值为 recursive
Cocoa pods的安装
CocoaPods可以方便地通过Mac自带的RubyGems安装。
打开终端 Terminal,然后键入以下命令:
$ sudo gem install -n/usr/local/bin cocoa pods
执行完这句如果报告以下错误:
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out - connect(2) (https://rubygems.org/latest_specs.4.8.gz)
ERROR: Possible alternatives: cocoapods
这是因为ruby的软件源rubygems.org因为使用亚马逊的云服务,被天朝屏蔽了,需要更新一下ruby的源,使用淘宝的Ruby镜像.过程如下:终端输入命令$ gem sources -l (查看当前ruby的源)
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
结果为 ***CURRENT SOURCES *** 说明成功了
如果gem太老,可以尝试用如下命令升级gem
$ sudo gem update --system 接着输入电脑密码,回车,就开始升级了.
升级成功后会提示: RubyGems system software updated
然后重新执行安装下载命令 应该是
$ sudo gem install -n/usr/local/bin cocoa pods
这时候应该没什么问题了
接下来进行安装,执行:
$ pod setup
Terminal会停留在 Setting up CocoaPods master repo 这个状态一段时间,是因为要进行下载安装,而且目录比较大,需要耐心等待一下. 安装成功后,你会看到: Setup completed
Cocoa pods的使用:
1.查找第三方库,终端输入命令 $ pod search AFNetworking 会显示相关的库
然后对该文件进行编辑,执行命令 $ open -e Podfile 打开该文件夹,会有一个空白文件打开,按下面格式编辑Podfile,保存.
Podfile文件的格式应该如下:
platform :ios, '7.0'
pod 'AFNetworking', '~> 2.5.3'
pod 'SDWebImage', '~> 3.7.2'
需要注意的几点:platform那一行,ios三个字母都要小写,而且与前面的冒号之间不能有间隔,后面的版本号也可以不写,这是所有库支持的ios最低版本。platform下面就是Cocoapods需要集成的开源库,根据你的需要确定集成那些库。
3.安装第三方库, $pod install
如果安装后导入不了头文件
注意:
1.从此以后需要使用Cocoapods生成的 .xcworkspace文件来打开工程,而不是使用以前的.xcodeproj文件
2.每次更改了Podfile文件,都需要重新执行一次pod update命令
ps:当执行pod install之后,除了Podfile,还会生成一个名为Podfile.lock的文件,它会锁定当前各依赖库的版本,之后即使多次执行pod install也不会更改版本,只有执行pod update才会改变Podfile.lock. 在多人协作的时候,这样可以防止第三方库升级时候造成大家各自的第三方库版本不一致。所以在提交版本的时候不能把它落下,也要添加到.gitignore中.
本文参考了CoderAO的分享,加上自己的一些理解.边学边分享.
更新: 执行pod install之后,输出
Updating local specs repositories
后没反应了, 这时应该这样做.pod install 换成pod install --verbose --no-repo-update这个命令
更新:最近在Cocoapods 输入了一条错误的语句,再次使用时出现下面错误:
查了好多资料,终于解决了这一个变态问题:
命令行操作:
$ mkdir -p $HOME/Software/ruby
$ export GEM_HOME=$HOME/Software/ruby
$sudo gem install -n/usr/local/bin cocoa pods
[...]
1 gem installed
$ export PATH=$PATH:$HOME/Sofware/ruby/bin
$ pod --version
0.39.0
更新: 如果发现某个类库不适用,那么我们要怎么把这些东西从项目中清理出去呢?下面介绍的就是如何删除一个或若干个已经在项目中配置好的第三方类库.
1) 打开Podfile文件,删除不想要的库,如 删除这句 pod 'MJExtension'
2)打开终端, cd 切换到当前项目目录下,重新执行 pod install --verbose --no-repo-update
(注意:关键字 Removing XXX)XXX:代表库名
3)重新打开xcworkspace文件,就可以看到不想要的库,已经被删除了。
-------每天进步一点点。
更新:使用 CocoaPods 找不到新版本的库,如搜索UMengSocial时,显示最新版本为 4.4,但是实际最新版本号为 5.2.1 。且更新库时显示:
[!] Unable to find a specification for `UMengSocialCOM (~> 5.2.1)`
原因: 在 install 或 update 第三方库时,为了提升速度笔者一般都加了参数
--verbose --no-repo-update
,忽略升级 spec 仓库,很有可能是因此而搜不到新版本库,在重新设置 CocoaPods 后就可以搜到了。
解决办法:只需要把当前Pod的目录清理一下,然后重新设置就可以了。在终端执行以下命令:
pod repo remove master
pod setup
执行下面命令(由于大家都懂的原因会很慢的),setup成功后执行install或update即可。
更新:(9.25号)
[!] The dependency `AFNetworking (~> 3.1.0)` is not used in any concrete target.
The dependency `Masonry (~> 1.0.2)` is not used in any concrete target.
在创建Podfile的时候,用这种格式
platform :ios, '8.0'
target 'MyApp' do
pod 'AFNetworking', '~> 3.1.0'
end
- 里面的 MyApp 记得替换为自己攻城里面的target。(‘’ 单引号记得要写)
gem sources -l
2、移除掉原有的源
gem sources --remove https://ruby.taobao.org/
3、添加国内最新的源。ruby-china
gem sources -a https://gems.ruby-china.org
4、检查是否添加成功
gem sources -l
5、安装cocoapods
sudo gem install -n /usr/local/bin cocoapods
6、安装完成后查看pod版本
pod --version
7、更新Podspec索引文件,创建本地索引库(这里要多等一会儿)
pod setup
附:
pod setup 时出现
Performing a deep fetch of the `master` specs repo to improve future performance
的错误。是因为pod steup的时候创建master这个库,没成功,之后就算移除镜像重新安装的话 默认是从matser库里获取,导致安装不成功。
解决办法是移除master库,重新创建。
sudo rm -fr ~/.cocoapods/repos/master
再重新setup
2、安装成功后,cd到你项目的更目录运行pod deintegrate解除项目cocopods依赖
3、运行pod install,重新安装cocopods
更新:(2017.12)
访问github出错,需要配置dns服务器,有时候github打不开,就必须用8.8.8.8这个公网的dns服务器,其他的dns服务器,不知道为何解析github就不太行;配置方式如下:
更新:
Cocoapods Undefined symbols for architecture armv7s\arm64\x86_64
解决: