设为首页 收藏本站
查看: 1652|回复: 0

[经验分享] CocoaPods安装、卸载、使用说明(Mac ox 10.11+)

[复制链接]

尚未签到

发表于 2017-7-5 14:21:27 | 显示全部楼层 |阅读模式
  一、全新安装前,先检查是否有安装残留
由于Mac 10.11更改了安全机制,所以cocoapods得安装和卸载命令也有所改变,
1、如果之前装过cocopods,最好先卸载掉,卸载命令:
$ sudo gem uninstall cocoapods【Mac 10.10之前】
$ sudo gem uninstall -n /usr/local/bin cocoapods【Mac 10.11之后】
2、先查看本地安装过的cocopods相关东西【本步骤没有必要】,命令如下:
$ gem list --local | grep cocoapods
会显示如下:
cocoapods-core (0.39.0)
cocoapods-downloader (0.9.3)
cocoapods-plugins (0.4.2)
cocoapods-search (0.1.0)
cocoapods-stats (0.6.2)
cocoapods-trunk (0.6.4)
cocoapods-try (0.5.1)
然后逐个删除吧:
$ sudo gem uninstall cocoapods-core【Mac 10.10之前】
$ sudo gem uninstall -n /usr/local/bin cocoapods-core【Mac 10.11之后】
。。。
  二、安装
  由于网上的教程基本都大同小异,但细节之处还不是很完善,所以借机会在这里补充下:
  注:要使用CocoaPods,那就要下载安装它,而下载安装CocoaPods需要Ruby环境
  1、准备工作
  当前安装环境为Mac os 10.11.6。Mac  OS本身自带Ruby,但还是更新一下保险,因为我第一次安装在没有更新Ruby的情况下就失败了。
  a) 查看下当前ruby版本:打开终端输入 ruby -v(确实安装了,不过用这个版本接下来工作失败了,所以更新下ruby)(更新方法自己百度。。。)






[objc] view plain copy

  • chendeMacBook-Air:~ chen$ ruby -v
  • ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]  
  • chendeMacBook-Air:~ chen$






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • chendeMacBook-Air:~ chen$ ruby -v
  • ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]  
  • chendeMacBook-Air:~ chen$
  b)cocoapods镜像:https://gems.ruby-china.org/   好像现在不支持淘宝了
  终端输入如下命令(把Ruby镜像指向Ruby China,避免被墙,你懂得)
  $gem sources --remove https://rubygems.org/
$gem sources --add https://gems.ruby-china.org/
$gem sources -l  (用来检查使用替换镜像位置成功)






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • chendeMacBook-Air:~ chen$ gem sources -l
  • *** CURRENT SOURCES ***  

  • https://gems.ruby-china.org/  






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • chendeMacBook-Air:~ chen$ gem sources -l
  • *** CURRENT SOURCES ***  

  • https://gems.ruby-china.org/  
  
2、下载安装CocoaPods

  终端输入:sudo gem install -n /usr/local/bin cocoapods







[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • ......
  • Installing ri documentation for cocoapods-0.39.0  
  • Done installing documentation for cocoapods-try, cocoapods-trunk, cocoapods-stats, cocoapods-search, cocoapods-plugins, cocoapods-downloader, cocoapods-core, cocoapods after 5 seconds  
  • 8 gems installed  






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • ......
  • Installing ri documentation for cocoapods-0.39.0  
  • Done installing documentation for cocoapods-try, cocoapods-trunk, cocoapods-stats, cocoapods-search, cocoapods-plugins, cocoapods-downloader, cocoapods-core, cocoapods after 5 seconds  
  • 8 gems installed  
  


  接下来进行安装,执行:
  
$ pod setup
  Terminal会停留在 Setting up CocoaPods master repo 这个状态一段时间,是因为要进行下载安装,而且目录比较大,需要耐心等待一下.安装成功后,你会看到:  setup completed
  这样就下载安装好了CocoaPods
  /************************************************************************************************************************************/
  安装过程遇到的问题:
  1、Ruby版本过低(更新就行了)
  2、






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • $ pod setup
  • Setting up CocoaPods master repo
  • [!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master  
  • Cloning into ‘master’…
  • error: RPC failed; curl 56 SSLRead() return error -36  
  • fatal: The remote end hung up unexpectedly
  • fatal: early EOF
  • fatal: index-pack failed






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • $ pod setup
  • Setting up CocoaPods master repo
  • [!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master  
  • Cloning into ‘master’…
  • error: RPC failed; curl 56 SSLRead() return error -36  
  • fatal: The remote end hung up unexpectedly
  • fatal: early EOF
  • fatal: index-pack failed
  


  3、






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • $ pod setup
  • Setting up CocoaPods master repo
  • [!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master  
  • Cloning into ‘master’…
  • error: RPC failed; curl 56 SSLRead() return error -9806  
  • fatal: The remote end hung up unexpectedly
  • fatal: early EOF
  • fatal: index-pack failed






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • $ pod setup
  • Setting up CocoaPods master repo
  • [!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master  
  • Cloning into ‘master’…
  • error: RPC failed; curl 56 SSLRead() return error -9806  
  • fatal: The remote end hung up unexpectedly
  • fatal: early EOF
  • fatal: index-pack failed
  


  4、






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • $ pod setup
  • Setting up CocoaPods master repo
  • [!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master  
  • Cloning into ‘master’…
  • error: RPC failed; curl 18 transfer closed with outstanding read data remaining  
  • fatal: The remote end hung up unexpectedly
  • fatal: early EOF
  • fatal: index-pack failed






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • $ pod setup
  • Setting up CocoaPods master repo
  • [!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master  
  • Cloning into ‘master’…
  • error: RPC failed; curl 18 transfer closed with outstanding read data remaining  
  • fatal: The remote end hung up unexpectedly
  • fatal: early EOF
  • fatal: index-pack failed
  


  解决方法:上面错误主要是os10.11+和cocoapods1.0+版本升级的安全机制更改造成的。主要出现在pod setup过程中。且该过程等待时间非常长,所以,你可以在$sudo gem install -n /usr/local/bin cocoapods命令后直接执行$Git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master 该过程作用与 pod setup作用相同,作者亲测。效果极佳!!!!
  如果还不成功!!!!可以同样的方法安装正式版v0.39 然后在升级到v1.0版本  
  gem update --system

sudo gem install -n /usr/local/bin cocoapods --pre
  
  /************************************************************************************************************************************/
  三、使用CocoaPods
  a  新建一个项目,名字PodTest
DSC0000.jpg

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



  • $cd /Users/chen/Desktop/projects/PodTest
  

c  建立Podfile(配置文件)
  接着上一步,终端输入$vim Podfile
DSC0001.jpg

  键盘输入 i,进入编辑模式,输入
  platform :iOS, '8.0'
target "PodTest" do
pod 'MBProgressHUD', '~> 1.0.0'
end
  然后按Esc,并且输入“ :”号进入vim命令模式,然后在冒号后边输入wq
DSC0002.jpg

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

  激动人心的时刻到了:确定终端cd到项目总目录,然后输入 $pod install,等待一会。
  
DSC0004.jpg
  查看项目根目录:
DSC0005.jpg

  注意:现在打开项目不是点击 PodTest.xodeproj了,而是点击 PodTest.xcworkspace
  对于工程发生的变化,有几点需要说明:
  a、第三方库会以成静态库方式引入工程使用
  CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。整个第三方库工程会生成一个名称为libPods.a的静态库提供给工程使用。
  b、xcworkspace(PodTest.xcworkspace)的作用是管理工程和第三方库
  PodTest工程和Pods工程被以workspace的形式组织和管理。
  


  补充:
  1、CocoaPods的基本安装及使用都详细的说明了,但还有一些补充,当需要同时导入多个第三方时候怎么办 ?
  这就需要修改Podfile了,就是用vim编辑的那个保存在项目根目录中的文件,修改完了Podfile文件,需要重新执行一次pod install命令。
  例如:
platform :ios
pod 'JSONKit',       '~> 1.4'
pod 'AFNetworking',  '~> 2.0'

  
2、CocoaPods可以查找你想要的第三方库
  终端输入命令:pod search JSONKit
  疯了了,我怎么查找这么大众的关键字,好多库~~
DSC0006.jpg

  然后重新编辑Podfile文件,按照之前的步骤,把更多的库都导入项目!
  3、上文中“建立Podfile(配置文件)接着上一步,终端输入 vim Podfile”步骤,如果不习惯使用vim编辑器,也可以使用linux命令touch,生成一个空的Podfile文件,然后使用其他的文本编辑器都可以,例如:



  • lizhongfudeMacBook-Pro:~ lizhongfu$ cd /Users/lizhongfu/Desktop/TestProject
  • lizhongfudeMacBook-Pro:TestProject lizhongfu$ touch Podfile
  
编辑好Podfile文件后,就可以执行pod install第三方导入了(详见:补充第1条),CocoaPods就开始为我们做下载源码、配置依赖关系、引入需要的framework等一些列工作。
  4、如果已经生成了CocoaPods管理的工程,则可以在Xcode中编辑Podfile,编辑保存后,别忘记cd到根目录,调用pod install命令
DSC0007.jpg
  5、项目存在多个Target的时候,需要配置Podfile文件来支持新增加的Target,否则只支持项目默认建立时生成的Target:
  a、如果新建一个Target,命名为Second,并且Second与Test两个Target所需要的第三方支持相同,也就是使用相同的Pods依赖库,则可以使用
link_with关键字:



  • link_with 'Test', 'Second'  
  • platform :ios
  • platform :ios, ‘9.0’   
  • pod 'AFNetworking', '~> 2.0'  
  

b、如果不同的Target需要不同的依赖库,则可以






[objc] view plain copy

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf

http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf


  • platform :ios
  • target :'Test' do  
  • pod 'Reachability'  
  • pod 'SBJson'     
  • pod 'AFNetworking'   
  • end

  • target :'Second' do  
  • pod 'OpenUDID'   
  • end
  


6、出现/Library/Ruby/Gems/2.0.0/gems/claide-0.8.1/lib/claide/command.rb:417:in `help!': [!] You cannot run CocoaPods as root. (CLAide::Help)
重新打开一个终端,然后pod install,不要sudo pod install。
  7、如果$ pod install时候遇到:
  Analyzing dependencies  
Fetching podspec for `UAAppReviewManager` from `..`  
[!] Unable to satisfy the following requirements:  
- `UAAppReviewManager (from `..`)` required by `Podfile`  
  8、如果要移除Cocoapods,则可以:
  a. 删除工程文件夹下的Podfile、Podfile.lock及Pods文件夹
  b. 删除xcworkspace文件
  c. 使用xcodeproj文件打开工程,删除Frameworks组下的Pods.xcconfig及libPods.a引用
  d. 在工程设置中的Build Phases下删除Check Pods Manifest.lock及Copy Pods Resources
DSC0008.jpg

  ps:如果将cocoapods集成到工程中后不小心修改或删除了其相关文件导致无法便以通过例如:不小心把
  Pods.xcconfig给删除了然后出现diff: /../Podfile.lock: No such file or directory,用上面的方法删除cocoapods后,
  再重新$sudo pod install一下就好了。
  如果编译的时候出现权限问题,对工程文件夹$sudo chmod 777 path-to-project-folder/*
  $sudo chown 777 path-to-project-folder/*
  


  9、当库正常导入,但还是找不到相关头文件,则可以:
  在TARGETS -> Search Paths -> User Header Search Paths 中 写入 ${SRCROOT}再将后面参数改为recursive:
DSC0009.jpg

  10、Xcode - ld: library not found for -lPods
  当新增加一个Target,并且pod install后,由于创建项目是默认创建的Target的Build Phases中引用了旧的.a,例如libPods.a,当新增加Targget后,libPods.a已经变成了libPods-Test.a,而新增加的Target名字为Second,依赖的.a为libPods-Second.a。所以libPods.a此时已经不再被引用,并且不会被生成,如果任何地方引用了就会报错,解决办法是出现问题的Target的Build Phases中删除无用的.a引用,例如libPods.a
DSC00010.jpg DSC00011.jpg

  11、pod update
若果Podfile中指定的依赖库版本不是写死的,当对应的依赖库有了更新,无论有没有Podfile.lock文件都会去获取Podfile文件描述的允许获取到的最新依赖库版本。
  12、在引用第三方,如果想明确第三方版本号的时候,还有一些小细节:



  • pod 'AFNetworking'      //不显式指定依赖库版本,表示每次都获取最新版本  (<span style="color: rgb(50, 62, 50); font-family: Arial; font-size: 14px; line-height: 26px;">11、</span><span style="color: rgb(50, 62, 50); font-family: Arial; font-size: 14px; line-height: 26px;">pod update</span>)  
  • 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'     //使用最新版本,与不显示指定依赖库版本相同

  13、如果pod install之后,一直停留在Updating local specs repositories,可以试一试 pod install --verbose --no-repo-update,原因是pod install被墙了
  可能出现的错误:
  一、pod install时报错:
  1、终端报错:The dependency MBProgressHUD (~> 0.9.2) is not used in any concrete target.
2、原因:CocoaPods升级到最新版本(包括一些高版本),Podfile文件的内容必须明确指出所用第三方库的targetName.
3、报错分析:低版本和高版本写法不一样.
  低版本:
platform :ios, '8.0'
pod 'MBProgressHUD', '~> 0.9.2'
  高版本:
platform :ios, '8.0'
target "targetName" do
pod 'MBProgressHUD', '~> 0.9.2'
end
  注意:这里的 targetName 填写工程的名字。
  二、删除某个框架
  方法:
  1.打开Podfile文件,删除JSONKit该行,即:
  platform:ios, '7.0'  
pod 'AFNetworking', '~> 2.1.0'
pod 'JSONKit', '~> 1.5pre'(删除该行)
pod 'MBProgressHUD', '~> 0.8'
  (如果想换成1.1版本,将被删除的行改成pod 'JSONKit-NoWarning', '~> 1.1'即可)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390906-1-1.html 上篇帖子: Python-Mac 安装 PyQt4 下篇帖子: Mac 安装jupyter notebook的过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表