iOS之---cocoaPods的使用详解------

========cocoaPods使用简易版====遇到问题具体看下面详细的

cocoaPods的使用:
 1.查看源  sudo gem sources -l(查看当前ruby的源)
 2.删除源  sudo gem sources --remove https://gems.ruby-china.org/
 3.设置源  sudo gem sources -a https://gems.ruby-china.com/
 4.如果gem太老,可以尝试用如下命令升级gem
 sudo gem update --system  如果提示/usr/bin错误 ,就该用sudo gem update -n /usr/local/bin —system

 5.安装cocoaPods
 方式一:sudo gem install cocoaPods;方式二:sudo gem install cocoapods -n /usr/local/bin

这个操作可以不要:(将specs仓库镜像换成gitcafe上的镜像或者是 oschina 上的镜像
$ pod repo add master https://git.coding.net/CocoaPods/Specs.git //或者 $ pod repo add master https://git.oschina.net/akuandev/Specs.git
,或者直接下载到本地)
安装cocoapods之后,还需要配置下载cocoapods.git:
mkdir -p ~/.cocoapods/repos/
cd ~/.cocoapods/repos
pod repo remove master(移除specs)
git clone --depth 1 https://github.com/CocoaPods/Specs.git master(直接下载到本地)

 6.执行设置:如果上面的一步不成功,直接设置这一步会成功;
 pod setup
 7.查看pods的版本号   pod --version
 8.在cocoaPods中搜索有没有第三方库AFNetworking,例如pod search AFNetworking
 9.cd 进入工程所在的目录(工程根目录,跟xcodeprj和xcworkspace在同一级)
 10.创建Podfile
 执行命令 touch Podfile或者也可以自己在工程根目录里面直接新建一个名为Podfile的文件,不能写成别的名字,)
 打开Podfile文件(执行命令 open -e Podfile),然后对改文件进行编辑,编辑完关闭。
 11.下载第三方框架pod install   或者
(安装框架,不更新本地索引,速度快,但是不会升级本地代码库)pod install --verbose --no-repo-update或者pod install --no-repo-update
 
12.升级框架:pod update
 13.Podfile文件中常用的框架
  platform :ios, '7.0'
      target 'wofubao' do

      pod 'AFNetworking', '~> 3.1'
      pod 'MBProgressHUD', '~> 0.9.1'
      pod 'SDWebImage', '~> 3.8'
      pod 'MJRefresh', '~> 2.4.12'
      pod 'MJExtension'           ,'3.0.13'
      pod 'Reachability', '~> 3.2'
      pod 'FMDB', '~> 2.5'
      pod 'SSKeychain', '~> 1.2.3'
      pod 'ZKSegment'
      pod 'DACircularProgress'
      pod 'pop'
      pod 'UMengUShare/UI'
      pod 'UMengUShare/Social/WeChat'
      pod 'UMengUShare/Social/QQ'
      pod 'UMengUShare/Social/Sina'
      pod 'UMengUShare/Social/AlipayShare'
      pod 'UMengUShare/Social/DingDing'
      pod 'UMengUShare/Social/SMS'
      pod 'JPush', ‘3.0.6’
      pod 'WHKit'
      pod 'AMap3DMap'             ,'4.6.1'
      pod 'AMapFoundation'        ,'1.3.4'
      pod 'AMapLocation'          ,'2.3.0'
      pod 'AMapSearch'            ,'4.5.0'
      ##pod 'PathCover', '~> 0.1.3'
     pod 'Reachability'
     pod 'Masonry'
     pod 'SDCycleScrollView'
     pod 'FSCalendar'
     pod 'MWPhotoBrowser'
     pod "PYPhotoBrowser"
     pod 'TZImagePickerController'
     pod "PYSearch"
     pod 'WMPageController', '~> 2.4.0'
     pod 'MLeaksFinder'
 
  end

Podfile.lock 是在第一次运行 pod install时生成的,Podfile.lock 中会标注项目当前依赖库的准确版本,其中包括了项目在 Podfile 中直接标注使用的库,以及这些库依赖的其他库。这样的好处是当你跟小伙伴协同开发时,你的小伙伴同步了你的 Podfile.lock 文件后,他执行 pod install会安装 Podfile.lock 指定版本的依赖库,这样就可以防止大家的依赖库不一致而造成问题。因此,CocoaPods 官方强烈推荐把 Podfile.lock 纳入版本控制之下。

 

*********podFile文件中的符号解释******

  • '> 0.1' Any version higher than 0.1 0.1以上
  • '>= 0.1' Version 0.1 and any higher version 0.1以上,包括0.1
  • '< 0.1' Any version lower than 0.1 0.1以下
  • '<= 0.1' Version 0.1 and any lower version 0.1以下,包括0.1
  • '~> 0.1.2' Version 0.1.2 and the versions up to 0.2, not including 0.2 and higher 0.2以下(不含0.2),0.1.2以上(含0.1.2)
  • '~> 0.1' Version 0.1 and the versions up to 1.0, not including 1.0 and higher 1.0以下(不含1.0),0.1以上(含0.1)
  • '~> 0' Version 0 and higher, this is basically the same as not having it. 0和以上,等于没有此约束

swift使用cocoapods参考:http://www.hangge.com/blog/cache/detail_1358.html

https://www.jianshu.com/p/23f13be525a0

swift 中的Podfile文件中:

source 'https://github.com/CocoaPods/Specs.git'platform :ios, '9.0'
use_frameworks!
target 'SwiftFastApp' do
      #pod 'Alamofire', '~> 4.0'
      #pod 'SwiftyJSON'
      pod 'ReachabilitySwift'



pod "SnapKit"

pod "Kingfisher"

#pod "SVProgressHUD"

pod "FDFullscreenPopGesture","~> 1.1"

pod "Alamofire"

#pod "MJRefresh" 

pod 'JXMarqueeView'
pod 'JCyclePictureView' 

pod 'HandyJSON', '~> 1.8.0'

 #pod 'MBProgressHUD'
pod 'Kingfisher'

end

 

********cocoaPods使用优化:https://www.jianshu.com/p/d936a311adde

找到CocoaPods存放repo的地方。终端输入open ~/.cocoapods/repos,就打开了repo存放的路径。 首先去https://github.com/CocoaPods/Specs下载zip文件;将下载的zip解压出来, 将所有解压出来的文件放入.cocoapods/repos/master文件夹中;cd ~/.cocoapods/repos/master/Specs;git init;关联远程仓库:git remote add origin https://github.com/CocoaPods/Specs;查看我们的repo是否正常,终端输入:pod repo;

**********cocoapods下载下来的还是旧的代码,解决方案:更新本地库缓存;https://www.jianshu.com/p/f820ec094395

1. 打开终端,输入pod cache list,会列出所有本地已经缓存的第三方库。

2. 这时可以在列表中找到'第三方库名'

3. 在终端中输入 pod cache clean 第三方库名

4. 到项目目录中,重新执行 pod install ,此时CocoaPods会从远程仓库重新拉取代码。

 

**********cocoaPods的缓存路径:~/Library/Caches/CocoaPods/Pods/Release

在工程中导入第三方的头文件时,会报以下的错误:cannot load underlying module for ‘***’

这个问题出现的原因还是因为podfile文件,你需要在文件里再加上一句话  source 'https://github.com/CocoaPods/Specs.git'

如果还是这样,需要在LinkFrameworkAndLibrary中加入XXXFramework.framework

 

==========不是使用cocoaPods引入第三方库的步骤:

 

1.把开源库的源代码复制到项目中
2.添加一些依赖框架和动态库-----target ---buildPhases----linkBinaryWithLibraries----addOther---选择静态库的路径添加
3.设置-ObjC,-fno-objc-arc等参数
4.管理他们的更新
==============

使用cocoaPods下载的框架,导入头文件时,用<>

使用了cocoa pods以后打开工程用xcdWorkspace.

 

CocoaPods的原理:

 

CocoaPods的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了Pods项目中。Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。

 

cocoaPods删除的过程:

1.打开终端,输入命令  which pod  然后回车 我们就看到一个地址,这个地址就是我们安装pod 的地址  ;

2.我们就要删除了 输入命令  sudo rm -rf /usr/local/bin/pod,输入电脑密码;

3.找到我们的cocoapods 安装包的位置 输入如下命令:gem list;

4.找到我们需要删除的cocoapods

5.看清楚版本号,然后进行删除,输入命令  sudo gem uninstall cocoapods -v 0.39.0(注:后面的版本号要和上面列表中的版本号对应)的部分;

6.删除 下一个包,输入命令:sudo gem uninstall cocoapods-core -v 0.39.0(注:这个包上面也有,注意版本好的对应);

7.

检查cocoapods是否删除: 输入如下命令:pod search AFNetworking或者pod  然后如图所示:


证明删除成功;

*****************删除cocopods已经下载的软件:

删除选中的pod 'ReachabilitySwift'的命令行
3.打开终端cd到当前项目的根目录下重新执行pod install --verbose --no-repo-update命令
当命令运行完后项目中的ReachabilitySwift第三方就已经被移除

 

*****报错: Showing All Messages Command PhaseScriptExecution failed with a nonzero exit code

解决方式:1.是安装 pods 清理工具,然后清理项目中 pods 的关联后,再 重新 pod install;

sudo gem install cocoapods-deintegrate cocoapods-clean

pod deintegrate

pod clean

2.升级cocoaPods:

sudo gem install cocoapods --pre

         pod update                 

3.xcode菜单file->Workspace Settings->Build System 选择Legacy Build System 使用旧的编译系统即可

 

 


*****cocoaPods的安装:

CocoaPods可以方便地通过Mac自带的RubyGems安装。

1.打开Terminal,然后键入以下命令:
sudo gem install cocoapods

 

 While executing gem ... (Gem::FilePermissionError)

    You don't have write permissions for the /usr/bin directory.

如上错误:修改权限:改为 sudo gem install -n /usr/local/bin cocoapods  即可。

 

执行完这句如果报告以下错误:
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: cocoa pods

这是因为ruby的软件源rubygems.org因为使用亚马逊的云服务,被我天朝屏蔽了,需要更新一下ruby的源,过程如下:
2.查看源  sudo gem sources -l(查看当前ruby的源)
3.删除源sudo gem sources --remove https://rubygems.org/ 或者删除sudo gem sources -rhttps://rubygems.org   

sudo gem sources --remove https://gems.ruby-china.org/;sudo gem sources --remove https://ruby.taobao.org/;

然后输入密码,出现https://ruby.taobao.org removed from sources表示删除成功

http://rubygems-china.oss.aliyuncs.com

 

 

4.设置淘宝的源sudo gem sources -a https://ruby.taobao.org/,

 

2017年淘宝的镜像不能用了,要换成sudo gem sources -a https://gems.ruby-china.com/,

(sudo gem sources -a https://gems.ruby-china.com/latest_specs.4.8.gz)

 

出现这句话标示成功添加https://ruby.taobao.org added to sources

5.查看源 sudo gem sources -l

6.如果gem太老,可以尝试用如下命令升级gem

 sudo gem update --system

 

输入密码Password:

升级成功后会提示: RubyGems system software updated

尝试sudo gem update更新源,再执行sudo gem install compass

出现这句话表示升级不成功Latest version currently installed. Aborting.

如果出现下面的话:表示路径设置错误:

 

  1. /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in `to_specs': Could not find 'cocoapods' (>= 0) among 6 total gem(s) (Gem::LoadError)  
  2.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec'  
  3.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in `gem'  
  4.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `
    '  

这就是路径设置的问题,可以通过执行:rvm use ruby-1.9.3-p448 ; 

如果出现ERROR:  While executing gem ... (Errno::EPERM)     Operation not permitted - /usr/bin/update_rubygem

则执行sudo gem install -n /usr/local/bin cocoapods --pre解决

出现下面的语句表示更新成功:

Successfully installed cocoapods-1.2.1.beta.1

Parsing documentation for cocoapods-1.2.1.beta.1

1 gem installed

 

 

 

 

7.然后重新执行安装cocoaPods下载命令
 sudo gem install cocoaPods

===========注意

 

sudo gem install cocoapods  之后有一个错误: ERROR:  Could not find a valid gem 'cocoapods' (>= 0) in any repository 

可能的解决办法:权限的问题,没有在root下面 。 sudo -i  或者 sudo su 进入到root之后再执行 sudo gem install cocoapods

 

 

 

 

报错:

ERROR:  Could not find a valid gem 'cocoapods' (>= 0) in any repository

ERROR:  Possible alternatives: cocoapods, cocoapods-art, cocoaout, cockapoc, cocoanova

这是因为service被强了,换一个sources就可以解决了

 

iOS之---cocoaPods的使用详解------_第1张图片

解决方案一:

执行下面的命令并重启:

sudo nvram boot-args="rootless=0"

sudo reboot

重启之后执行下面的命令检查:

sudo gem install cocoa pods -V

解决方案二:

sudo gem install -n /usr/local/bin coacoaPods

==========注意

 

安装成功出现下面Successfully installed cocoapods-0.39.0

Parsing documentation for cocoapods-0.39.0

1 gem installed

如果出现以下错误,直接pod setup:

ERROR:  Could not find a valid gem 'coacoaPods' (>= 0) in any repository

ERROR:  Possible alternatives: cocoapods, cocoapods-art, cocoaout, cockapoc, cocoanova

lambodeMacBook

 

8.执行设置:如果上面的一步不成功,直接设置这一步会成功;

pod setup

查看cocoaPods的版本号:pod --version

如果没有报错说明安装成功了;

Terminal会停留在 Setting up CocoaPods master repo 这个状态一段时间,是因为要进行下载安装,而且目录比较大,需要耐心等待一下.如果想加快速度,可使用cocoapods的镜像索引.

所有项目的Podspec文件都托管在https://github.com/CocoaPods/Specs,
第一次执行pod setup时,CocoaPods会将这些podspec索引文件更新到本地的~/.cocoapods目录下,
这个索引文件比较大,所以第一次更新时非常慢.
友好人士在国内的服务器建立了Cocoapods索引库的镜像,
所以执行索引跟新操作时候会快很多.具体操作方法如下:
$ pod repo remove master
$ pod repo add master https://gitcafe.com/akuandev/Specs.git
$ pod repo update
这是使用gitcafe上的镜像,将以上代码中的 https://gitcafe.com/akuandev/Specs.git 
替换成 http://git.oschina.net/akuandev/Specs.git 即可使用oschina上的镜像。

出现下面代码表示成功了:

 

Setting up CocoaPods master repo

  $ /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress

  Cloning into 'master'...

  remote: Counting objects: 1172492, done.        

  remote: Compressing objects: 100% (181/181), done.        

  remote: Total 1172492 (delta 84), reused 33 (delta 33), pack-reused 1172273        

  Receiving objects: 100% (1172492/1172492), 388.46 MiB | 1.12 MiB/s, done.

  Resolving deltas: 100% (559000/559000), done.

  Checking out files: 100% (146264/146264), done.

Setup completed

 

 

*********pod init后报错:[!] Existing Podfile found in directory

解决:如果不调用创建Podfile命令就直接调用pod install命令。将会提示错误,可以先open -e Podfile,再pod insatll;

 

***项目里的Podfile文件变成了exec格式:

这个是因为权限的问题造成的

进入该文件的路径,再使用终端命令:    chmod 644 Podfile 


=======================================

cocoaPods的使用方法一:

1.在cocoaPods中搜索有没有第三方库:pod search AFNetworking

 

2.cd 进入工程所在的目录(工程根目录)

3.创建Podfile 

执行命令 touch Podfile或者也可以自己在工程根目录里面直接新建一个名为Podfile的文件,不能写成别的名字,)

然后对改文件进行编辑,执行命令 open -e Podfile
第一次执行这个命令,会有一个空白文件打开,可以先放在一边,
Podfile文件的格式应该如下:
platform :ios, '7.0'
pod 'AMap2DMap', '~> 2.5.0'
pod 'AFNetworking', '~> 2.5.3'
pod 'SDWebImage', '~> 3.7.2'

 

==========上面不行就用下面的

platform :ios, '8.0'
#use_frameworks!
target 'IFish' do
  pod 'AFNetworking'
 pod 'MBProgressHUD'
pod 'MJExtension'
end

 

 

  platform :ios, '7.0'

 

     target 'wofubao' do

 

     pod 'AFNetworking', '~> 3.1'

     pod 'MBProgressHUD', '~> 0.9.1'

     pod 'SDWebImage', '~> 3.8'

     pod 'MJRefresh', '~> 2.4.12'

     pod 'MJExtension'           ,'3.0.13'

     pod 'Reachability', '~> 3.2'

     pod 'FMDB', '~> 2.5'

     pod 'SSKeychain', '~> 1.2.3'

     pod 'ZKSegment'

     pod 'DACircularProgress'

     pod 'pop'

     pod 'UMengUShare/UI'

     pod 'UMengUShare/Social/WeChat'

     pod 'UMengUShare/Social/QQ'

     pod 'UMengUShare/Social/Sina'

     pod 'UMengUShare/Social/AlipayShare'

     pod 'UMengUShare/Social/DingDing'

     pod 'UMengUShare/Social/SMS'

     pod 'JPush', ‘3.0.6’

     pod 'WHKit'

     pod 'AMap3DMap'             ,'4.6.1'

     pod 'AMapFoundation'        ,'1.3.4'

     pod 'AMapLocation'          ,'2.3.0'

     pod 'AMapSearch'            ,'4.5.0'

     ##pod 'PathCover', '~> 0.1.3'

pod 'Reachability'

pod 'Masonry'    

pod 'SDCycleScrollView'

pod 'FSCalendar'

pod 'MWPhotoBrowser'

pod "PYPhotoBrowser"
pod 'TZImagePickerController'
pod "PYSearch"

pod 'WMPageController', '~> 2.4.0' 
pod 'MLeaksFinder'

 end

 

===============

需要注意的几点:platform那一行,ios三个字母都要小写,而且与前面的冒号之间不能有间隔,后面的版本号也可以不写,但是有些开源库对版本是有要求的,比如要在6.0以上才能运行,遇到这样的开源库就需要写上版本号。如果是swift,还需要 在podfile文件中加入这句话:use_frameworks!

3.下载第三方框架pod install   或者pod install --verbose --no-repo-update或者pod install --no-repo-update

4.升级框架:pod update

错误:可能引号错误

使用Cocoapods 导入第三方的资源时,出现如下警告:

 

Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.

不要使用文本编辑去编辑Podfile,使用Xcode编辑,或者使用终端敲命令去编辑。

 

cocoaPods的使用方法二:

 

使用CocoaPods

a  新建一个项目,名字PodTest

 

b  终端中,cd到项目总目录(注意:包含PodTest文件夹、PodTest.xcodeproj、PodTestTest的那个总目录)

 

[objc] view plaincopyprint?在CODE上查看代码片

  1. cd /Users/lucky/Desktop/PodTest   


c  建立Podfile(配置文件)

 

接着上一步,终端输入 vim Podfile

 

键盘输入 i,进入编辑模式,输入

platform :ios, '7.0' 
pod 'MBProgressHUD', '~> 0.8'

 

然后按Esc,并且输入“ :”号进入vim命令模式,然后在冒号后边输入wq

 

注意:键盘输入 :后,才能输入wq。回车后发现PodTest项目总目录中多一个Podfile文件

 

激动人心的时刻到了:确定终端cd到项目总目录,然后输入 pod install,等待一会,大约3分钟。

 

 

查看项目根目录:

 

 

cocoaPods 使用方法三:

使用A'lcartraz(管理xcode插件的工具)来创建podFile文件

 

 

 

===================================================

Podfile和多个target

 

Podfile本质上是用来描述Xcode工程中的targets用的 。如果我们不显式指定Podfile对应的target,CocoaPods会创建一个名称为default的隐式target,会和我们工程中的第一个target相对应。换句话说,  如果在Podfile中没有指定target,那么只有工程里的第一个target能够使用Podfile中描述的Pods依赖库。

如果想在一个Podfile中同时描述project中的多个target,根据需求的不同,可以有不同的实现方式。为了说明问题,在原来的工程中再创建一个名称为Second的target,现在的project中包含的target有: iOS之---cocoaPods的使用详解------_第2张图片

①多个target中使用相同的Pods依赖库

比如,名称为CocoaPodsTest的target和Second的target都需要使用Reachability、SBJson、AFNetworking三个Pods依赖库,可以使用  link_with 关键字来实现,将Podfile写成如下方式: 

link_with 'CocoaPodsTest', 'Second'
platform :ios  
pod 'Reachability',  '~> 3.0.0'  
pod 'SBJson', '~> 4.0.0'  
  
platform :ios, '7.0'  
pod 'AFNetworking', '~> 2.0''CocoaPodsTest', 'Second'
platform :ios  
pod 'Reachability',  '~> 3.0.0'  
pod 'SBJson', '~> 4.0.0'  
  
platform :ios, '7.0'  
pod 'AFNetworking', '~> 2.0'

这种写法就实现了CocoaPodsTest和Second两个target共用相同的Pods依赖库。 

②不同的target使用完全不同的Pods依赖库

CocoaPodsTest这个target使用的是Reachability、SBJson、AFNetworking三个依赖库,但Second这个target只需要使用OpenUDID这一个依赖库,这时可以使用  target关键字,Podfile的描述方式如下: 

target :'CocoaPodsTest' do
platform :ios  
pod 'Reachability',  '~> 3.0.0'  
pod 'SBJson', '~> 4.0.0'  
  
platform :ios, '7.0'  
pod 'AFNetworking', '~> 2.0'
end

target :'Second' do
pod 'OpenUDID', '~> 1.0.0'
end:'CocoaPodsTest' do
platform :ios  
pod 'Reachability',  '~> 3.0.0'  
pod 'SBJson', '~> 4.0.0'  
  
platform :ios, '7.0'  
pod 'AFNetworking', '~> 2.0'
end

target :'Second' do
pod 'OpenUDID', '~> 1.0.0'
end

其中,do/end作为开始和结束标识符。

3、使用Podfile管理Pods依赖库版本

再引入依赖库时,需要显示或隐式注明引用的依赖库版本,具体写法和表示含义如下:

pod 'AFNetworking'      //不显式指定依赖库版本,表示每次都获取最新版本
pod 'AFNetworking', '2.0'     //只使用2.0版本
pod 'AFNetworking', '> 2.0'     //使用高于2.0的版本
pod 'AFNetworking', '>= 2.0'     //使用大于或等于2.0的版本
pod 'AFNetworking', '< 2.0'     //使用小于2.0的版本
pod 'AFNetworking', '<= 2.0'     //使用小于或等于2.0的版本
pod 'AFNetworking', '~> 0.1.2'     //使用大于等于0.1.2但小于0.2的版本
pod 'AFNetworking', '~>0.1'     //使用大于等于0.1但小于1.0的版本
pod 'AFNetworking', '~>0'     //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本'AFNetworking'      //不显式指定依赖库版本,表示每次都获取最新版本
pod 'AFNetworking', '2.0'     //只使用2.0版本
pod 'AFNetworking', '> 2.0'     //使用高于2.0的版本
pod 'AFNetworking', '>= 2.0'     //使用大于或等于2.0的版本
pod 'AFNetworking', '< 2.0'     //使用小于2.0的版本
pod 'AFNetworking', '<= 2.0'     //使用小于或等于2.0的版本
pod 'AFNetworking', '~> 0.1.2'     //使用大于等于0.1.2但小于0.2的版本
pod 'AFNetworking', '~>0.1'     //使用大于等于0.1但小于1.0的版本
pod 'AFNetworking', '~>0'     //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

 

======================================

常见错误:

 

Error 1:

 

Error fetching http://ruby.taobao.org/:

bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)

解决方案:把安装流程中 $ gem sources -a http://ruby.taobao.org/ 

改为:$ gem sources -a https://ruby.taobao.org/


Error 2:

ERROR:  While executing gem ... (Errno::EPERM)

Operation not permitted - /usr/bin/pod

解决方案:苹果系统升级 OS X EL Capitan 后会出现的插件错误,将安装流程 5.安装 CocoaPods 的 sudo gem install cocoapods

改为 sudo gem install -n /usr/local/bin cocoapods


Error 3:

[!] Unable to satisfy the following requirements:

- `AFNetworking (~> 2.3.1)` required by `Podfile`

Specs satisfying the `AFNetworking (~> 2.3.1)` dependency were found, but they required a higher minimum deployment target.

解决方案:Podfile 文件 中   platform:ios, ‘8.0’  后边的 8.0 是平台版本号 ,一定要加上

 

 

sudo gem install coacoaPods出现以下错误  Could not find a valid gem 'coacoaPods' (>= 0) in any repository的解决方法:

出现这样的问题  百度了一下  说是command line tools没有安装,这时候我跟大多数人一样  到Xcode ->preferences ->downloads里面去找这个command line tools 但是!!!  如果执行下这个命令:Xcode-select --install 就会发现 弹出一个窗问我们是否要安装命令行工具 ,果断下载安装  

安装完了后 再次sudo gem install cocoapods  发现还是会报同样的错误,说可能是权限的问题,需要进去到root下面,使用sudo -i或者sudo su进入到root之后再 执行sudo gem install cocoapods   到这里命令行工具就安装好了  command+q退出一下  再重新进入Shell里面 执行sudo gem install cocoapods 

 

 

然后检查是否可以ping通github,在终端中输入:

$ ping github.com 

然后查看pob repo list:

$ pod repo list

说明Cocoapods在将它的信息下载到 ~/.cocoapods里;

cd  到该目录里,用du -sh *命令来查看文件大小,结果显示0 repos,说明没有安装成功;

在终端输入:

cd ~/.cocoapods

进入cocoapods文件后在终端输入:du -sh *

 

重新执行pod setup,过一段时间后提示setup completed,在终端中输入 pod list,展示出安装列表;

 

===============

2017最新安装:

1.首先查看ruby是否是最新版的。ruby是通过rvm安装的所以需要先安装rvm后查看ruby是否是最新的(通过查看ruby版本列表来判断),在终端需要中输入以下命令:

  (1)安装RVM.RVM:Ruby Version Manager,Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset)

      curl -L get.rvm.io | bash -s stable

      等待一段时间后就可以成功安装好 RVM

      source ~/.bashrc  

      source ~/.bash_profile 

      测试是否安装正常

      rvm -v

 (2)用RVM升级Ruby

  1. #查看当前ruby版本  
  2. $ ruby -v  
  3. ruby 2.0.0  
  4. #列出已知的ruby版本 --找到最新的版本安装 
  5. $ rvm list known  
  6. #安装ruby 2.6.4  
  7. $ rvm install 2.6.4

 

2.更换Ruby镜像--淘宝的那个镜像(https://ruby.taobao.org/ )已经不可用了。官方的需要FQ。所以我们现在用最新支持的ruby镜像(https://gems.ruby-china.org/)

  需要的命令行:

  gem sources --remove https://rubygems.org/ 
  gem sources -a https://gems.ruby-china.org/ 
  gem sources -l  (用来检查使用替换镜像位置成功)

  出现则说明成功了。

 

3.下载安装CocoaPods

  在命令行中输入:

  安装:sudo gem install cocoapods 

  更新:sudo gem update cocoapods 

  在这里会很快就好了。。。网上教程说这样就已经完成安装了。。但我试了一下,直接搜索一下。在终端中输入:pod search  AFNetworking。会出现“Setting up CocoaPods master repo“提示,而且很久一直不动,网上说因为没FQ的原因。但是我们已经将bury镜像已经改了,为什么还会这样呢?。还有一个原因是因为在后台下载,还没下载完成,所以会这样。

  新开一个终端窗口,输入"cd ~/.cocoapods/"命令行跳到cocoapods文件夹内,执行"du -sh *"查看文件夹的大小。发现一直是0。快崩溃了。下班回去休息。

 

 

首先将ruby更新到最新(上边方法)、将gem更新到最新、将cocoapods更新到最新。在将cocoapods更新到最新时,查到需要执行"pod setup",但是执行这个时会出现一直是“Setting up CocoaPods master repo“,但是查看大小还是0。此外还会出现下面这个新的错误(这个发现让我欣喜若狂,起码不是那么单调了,或许会成为突破口):

[!] An error occurred while performing `Git pull` on repo `master`.

[!] /usr/bin/git pull --ff-only

这个错误应该是说这个节点有问题。就又找资料,然后试试把cocoapods的节点删除,重新添加一个节点,或许就行,说干就干:

原因: Cocoapods的分支不支持当前最新的Xcode版本

解决办法: 删除master分支 重新建立新的分支

sudo rm -fr ~/.cocoapods/repos/master

然后再: pod setup

在pod setup的过程中又是这个提示"Setting up CocoaPods master repo",当时的感觉就快要砸电脑了,最后不死心去查看了一下cocoapods文件夹的大小

pod setup这个操作成功了。

 

整个cocoapods安装应该成功了吧。输入"pod search AFNetworking" 居然有内容出来。然后按照之前的教程在终端中,cd到项目总目录

cd /Users/md098/Desktop/PodTest

建立Podfile(配置文件)

 接着上一步,终端输入 vim Podfile

 

键盘输入 i,进入编辑模式,输入

platform :iOS, '7.0' 
pod 'MBProgressHUD', '~> 0.8'

 

然后按Esc,并且输入“ :”号进入vim命令模式,然后在冒号后边输入wq

 

注意:键盘输入 :后,才能输入wq。回车后发现PodTest项目总目录中多一个Podfile文件

 

激动人心的时刻到了:确定终端cd到项目总目录,然后输入 pod install。。。然后你会发现。。。

提示这个错误:[!] The dependency `MBProgressHUD` is not used in any concrete target.

原来新的cocoapods不能像之前那样安装第三方了。现在的格式是要加上项目的target。如下:

platform :ios, '8.0' 

use_frameworks! 

target 'lrtest' do 

    pod 'AFNetworking', '~> 2.6' 

end

执行pod install / pod update 就都可以了

 

总结:安装过程出错,则删除并重新(更新)所有的需要的环境:(ruby、gem、cocoapods、其中包括cocoapods的节点),替换新的ruby镜像即可。

 

 

 

 

 

你可能感兴趣的:(iOS/oc)