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

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

清华大学的镜像:https://mirror.tuna.tsinghua.edu.cn/help/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

如果下载不下来,可以更新索引库:pod repo update,或者rm ~/Library/Caches/CocoaPods/search_index.json 移除本地索引然后再执行安装,或更新一下 CocoaPods 版本。
这个操作可以不要:(将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
,或者直接下载到本地)

报错:Cloning spec repo `cocoapods` from `https://github.com/CocoaPods/Specs.git`
[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `cocoapods`.
You can try adding it manually in `/Users/fyhsurvivors/.cocoapods/repos` or via `pod repo add`

原因:因为 CocoaPods 的库文件较大 ,https://github.com/CocoaPods/Specs.git 的方式很容易中断,建议尝试切换为 ssh 的方式进行 clone 操作 git@github.com:CocoaPods/Specs.git

解决:终端中输入如下命令,处理 cocoapods 的 repos;
rm -rf ~/.cocoapods
mkdir -p ~/.cocoapods/repos
cd ~/.cocoapods/repos
git clone git@github.com:CocoaPods/Specs.git
如果下载不下来;用镜像git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master,(要在Podfile中第一行添加source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git',或者不加这一行也行,但是要修改配置文件:cd ~/.cocoapods/repos/master/.git    vi config //把里面的url替换为https://github.com/CocoaPods/Specs.git)
清华的索引定期更新,想要最新的,就要定期拉取 cd ~/.cocoapods/repos/master,  git pull
(参考
https://blog.csdn.net/zhu410289616/article/details/107010128/)


(和上面的问题一样)安装cocoapods之后,如果pod install下载不下来,还需要配置下载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(直接下载到本地,~/CocoaPods/Specs是所有公共的Pods的索引)

 6.执行设置:如果上面的一步不成功,直接设置这一步会成功;
 pod setup   这一步是把远程仓库的spec索引文件下载到本地

如果遇到错误:Results logged to /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-19/2.6.0/ffi-1.12.2/gem_make.out
解决办法 终端: xcode-select --install 等安装软件完成再输入 sudo gem install -n /usr/local/bin cocoa pods 、pod setup,测试 pod search AFNetworking 。
如果还不行,就升级ruby(命令brew install ruby)

pod install 遇到 [!] CDN: trunk Repo update failed 错误怎么解决
很简单在Podfile文件中添加一句话即可
source ‘https://github.com/CocoaPods/Specs.git’


 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
 如果出现问题Error loading the plugin `cocoapods-acknowledgements-1.3.0`.  说明缺少cocoapods-acknowledgements,就 执行  sudo gem install cocoapods-acknowledgements.
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 纳入版本控制之下。

pod install
第一次都会使用该命令,会把每个安装的库的版本写入 Podfile.lock 文件中,不管有没有指定库的版本,都会把当前安装的版本写入。

在后面添加或删除库时使用该命令不会影响到其余库的版本,因为 Podfile.lock 已经锁定了,不会去检查更新每个库的版本。

pod install --verbose --no-repo-update

只会安装新框架,不更新本地索引,速度快,但是不会升级本地代码库

该命令只安装新添加的库,已更新的库忽略

pod update 库名--verbose --no-repo-update
该命令只更新指定的库,其它库忽略

 更新框架,不更新本地索引,速度快
可以安装新框架或者删除不用的框架,也会升级项目已经安装的框架
 pod update --no-repo-update

pod update   更新所有项目依赖库,并创建新的 `Podfile.lock` 文件;先拉取远程最新目录,再根据目录中的资源重新更新一遍pod。

pod init   在当前目录生成 `Podfile` 文件

pod outdated 会列出当前所有库的最新版本

use_frameworks!,一般混编或是用 Swift 导入时需要打开,其它情况不用处理即可。

 platform :ios, '9.0'作用是指定平台和版本,否则 pod install 后会出现警告。

pod安装相关:

安装测试版
 sudo gem install cocoapods --pre

删除老版本的程序包  sudo gem cleanup

升级所有程序包   sudo gem update

升级 gem   sudo gem update --system
如果提示/usr/bin错误 ,就该用sudo gem update -n /usr/local/bin —system

sudo gem install cocoapods   安装 cocoaPods  ;如果报错使用 sudo gem install cocoapods -n /usr/local/bin

sudo gem update cocoapods   更新cocoaPods

更新本地索引库:

pod repo update 会把 ~/.cocoapods/repos/这个目录下所有的资源库目录都更新一遍

pod repo update ~/.cocoapods/repos/***/ 更新某个文件

报错:

/Users/lambo/Desktop/swift/driver-home/Pods/Target Support Files/Pods-DriveHome/Pods-DriveHome.debug.xcconfig: unable to open file (in target "DriveHome" in project "DriveHome")

原因:项目里面并没有帮我们装好pods,我们没有安装项目需要依赖的pods就直接运行了。

解决:cd到项目的目录,终端pod install。

*********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 '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'


end

********cocoaPods使用优化:cocoaPods远程索引库手动下载到本地,https://www.jianshu.com/p/d936a311adde  

~/CocoaPods/Specs是所有公共的Pods的索引

找到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下载下来的还是旧的代码,解决方案:更新本地库缓存;cocoapods更新本地库缓存 - 简书

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文件即可。

Podfile.lock 文件主要包含三个块:PODSDEPENDENCIESSPEC CHECKSUMS,用来记录每个pod的版本号、依赖的其他库和每个库对应的podspec.json文件的 checksum(SHA-1算法)。通过这些信息可以确保多人协作的时候,大家使用的是相同版本的第三方库。

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

但是,Podfile.lock 并不是一成不变的,当你修改了 Podfile 文件里使用的依赖库或者运行 pod update 命令时,就会生成新的 Podfile.lock 文件。

协同开发时需要注意使用 pod install 和 pod update 的区别:使用 pod install,你只会安装 Podfile 中新改变的东西,并且会:优先遵循 Podfile 里指定的版本信息;其次遵循 Podfile.lock 里指定的版本信息来安装对应的依赖库。使用 pod update,你会根据 Podfile 的规则更新所有依赖库,不会理睬现有的 Podfile.lock,而是根据安装依赖库的情况生成新的 Podfile.lock 文件。

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 RubyGems.org | your community gem host - 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 RubyGems.org | your community gem host 或者删除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 `<main>'  

这就是路径设置的问题,可以通过执行: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就可以解决了

解决方案一:

执行下面的命令并重启:

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有: 

①多个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镜像即可。

Mac10.15安装cocoaPods出错的解决:

报错:Gem files will remain installed in /Users/soul/.rvm/gems/ext-ruby-2.6.3-p62/gems/ffi-1.12.2 for inspection.
Results logged to /Users/soul/.rvm/gems/ext-ruby-2.6.3-p62/extensions/universal-darwin-19/2.6.0/ffi-1.12.2/gem_make.out

解决思路:
0.终极目标是更新cocoapods,分析一下现在的状况是因为mac os升级10.15后不会自带升级ruby环境
1.现在的问题是gem干活不给力,找不到ruby的环境变量
2.升级ruby 需要先升级 rvm
3.升级rvm 需要依赖homebrew
4.安装homebrew 需要xcode command line

步骤:
1.先appstore安装xcode 或者 softwareupdate -l (取代xcode-select--install)
2.安装 homebrew   (  终端命令  /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"    )
3.安装rvm
4.更新ruby

#安装ruby前请安装组件
rvm requirements
rvm install 2.6.3

安装homebrew:

 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 如果不成功,参考Mac上安装使用Homebrew_安装后打开homebrew-CSDN博客

执行更新命令 brew update  报错:homebrew-core is a shallow clone.

解决:执行rm -rf /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core删除brew的核心,然后执行brew update更新

安装rvm:

——查看rvm版本:rvm -v
——查看现在使用RVM管理的Ruby版本:which rvm
——列出所有可供RVM使用的Ruby版本:rvm list
——列出可安装的版本:rvm list known

rvm自动更新:rvm get stable --auto-dotfiles

删除rvm:rvm  implode

为了保险起见还需要执行(自己的Users目录中删除)下面的命令:

cd ~ 

sudo rm -rf .rvm .rvmrc   /etc/rvmrc 

gem uninstall rvm

注释 .bashrc 或者  .bash_profile 或者 .profile 中的相关语句:#[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function 

RVM全称是ruby version manager,它是一个命令行工具,允许您轻松地安装管理和使用多个ruby环境。
虽然macOS自带了一个ruby环境,但是那是系统自己使用的,所以权限很小,只有system。而/Library目录是root权限,所以很多会提示无权限。

安装gpg:    brew install gnupg

安装mpapis公钥(gpg keys):

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

安装rvm:

\curl -sSL https://get.rvm.io | bash

退出终端然后重启终端,输入:

rvm list
  • 如果收到:No rvm rubies installed yet. Try 'rvm help install'.表面还没有安装ruby,这时可以安装你想要的ruby版本了.

安装ruby:2.7.1是版本号

rvm install 2.7.1

创建默认的ruby版本:

rvm alias create default 2.7.1

更新ruby:

命令查看一下有几个版本:     brew info ruby

更新新版本(安装慢 需要等待):  brew install ruby

切换到指定版本:  brew switch ruby 版本号

如果有提示要加入环境变量,就执行以下命令: 

ruby的环境变量:终端执行以下命令:

echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile

source ~/.bash_profile

对于老版本的ruby,如果在使用时遇到下面的错误:

/Users/xxx/.rvm/src/rubygems-3.0.8/lib/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- openssl (LoadError)

可以尝试使用rvm来重新安装openssl,然后使用这个openssl安装ruby.

重新安装openssl:    rvm pkg install openssl
安装ruby:         rvm install 2.3.1 --with-openssl-dir=$HOME/.rvm/usr

如果出现错误:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

解决:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused的几种解决方式-CSDN博客homebrew下载不下来也先要设置下面的操作,)

(1)打开网站: https://www.ipaddress.com/
查询一下 raw.githubusercontent.com对应的IP 地址
2)   sudo vi /private/etc/hosts

在hosts文件中添加    199.232.96.133       raw.githubusercontent.com

source ~/.bash_profile

报下面的错误:

/usr/local/bin/git clone https://github.com/SDWebImage/SDWebImage.git /var/folders/_t/bkzhbbxd22ddppzcpfqhv8200000gn/T/d20210419-6650-k8c9f4 --template= --single-branch --depth 1 --branch 5.11.0

解决:命令行执行 sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer (-switch 后面加上你的Xcode.app包内容里的Developer的文件夹路径即可)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值