CocoaPods

作者: Kevin_wzx | 来源:发表于2016-01-22 15:59 被阅读0次

    目录

    1.原理及说明
    2.安装 Ruby 环境
    3.安装 CocoaPods
    4.使用 CocoaPods
    5.补充 - 安装好以后在新的项目中使用
    6.使用过程中遇到的各种问题 Bug
    7.常用的命令行
    8.私有库 Pod

    1.原理及说明

    原理:
    每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm。随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫做:CocoaPods,CocoaPods项目的源码在Github上管理。比如通常情况下,一个网络库就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。对于某些开源库,我还需要设置-licucore或者 -fno-objc-arc等编译参数管理这些依赖包的更新。这些体力活虽然简单,但毫无技术含量并且浪费时间。在使用CocoaPods之后,我只需要将用到的第三方开源库放到一个名为Podfile的文件中,然后执行pod install。CocoaPods就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数。

    说明:
    1、第三方库会被编译成.a静态库供我们真正的工程使用。CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。整个第三方库工程会生成一个名称为libPods.a的静态库提供给我们自己的CocoaPodsTest工程使用。
    对于资源文件,CocoaPods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。
    2、我们的工程和第三方库所在的工程会由一个新生成的workspace管理为了方便我们直观的管理工程和第三方库,CocoaPodsTest工程和Pods工程会被以workspace的形式组织和管理,也就是我们刚才看到的CocoaPodsTest.xcworkspace文件。
    3、原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。
    4、CocoaPods通过一个名为Pods.xcconfig的文件来在编译时设置所有的依赖和参数。

    参考链接:
    1.CocoaPods详解之使用篇:http://blog.csdn.net/wzzvictory/article/details/18737437
    2.CocoaPods详解之进阶篇:http://blog.csdn.net/wzzvictory/article/details/19178709
    3.CocoaPods原理系列:https://juejin.cn/post/6932739864613879821
    4.CocoaPods原理及组件化:https://juejin.cn/post/6861887227438301198
    5.Cocoapods基础使用:https://www.jianshu.com/p/2e88be63a18e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
    6.rvm、Ruby 环境和 CocoaPods 安装使用及相关报错问题解决:https://xiaozhuanlan.com/topic/7654293801

    2.安装Ruby环境

    2.1 查看Mac是否安装Ruby和gem

    PS:Ruby是一门开发语言,gem为Ruby第三方库管理工具,CocoaPods是用Ruby写的一个第三方工具。
    在终端中输入命令:ruby --versiongem --version
    输出如下类似提示符,则表示Ruby环境已安装

    $ ruby --version
    ruby 2.0.0p643 (2015-02-25 revision 49749) [x86_64-darwin14.3.0]
    $ gem --version
    2.4.8
    

    2.2 若提示command not found 则需要安装Ruby环境

    • 安装Ruby环境需要安装Xcode及Command Line Tools。
    • 安装Command Line Tools:xcode-select --install
    • 安装RVM,Ruby的多版本管理工具。
      $ curl -L https://get.rvm.io | bash -s stable
      $ source ~/.rvm/scripts/rvm
      $ rvm install 2.0.0
      $ rvm use 2.0.0
      $ /bin/bash --login
    

    3.安装CocoaPods

    3.1 使用淘宝的镜像安装Ruby的第三方库,修改gem的镜像:

    $ gem sources --remove https://rubygems.org/
    $ gem sources -a https://ruby.taobao.org/
    

    3.2 为了验证你的Ruby镜像是并且仅是淘宝,可以用以下命令查看:

    $ gem sources -l
    # 只有在终端中出现下面文字才表明你上面的命令是成功的:
    * CURRENT SOURCES *
    https://ruby.taobao.org/
    

    如果出现多个需要将其余的源删除。

    3.3 终端中执行安装CocoaPods

    $ sudo gem install cocoapods
    

    3.4 执行完成后,需要初始化CocoaPods的环境

    $ pod setup
    

    4.使用CocoaPods

    4.1 创建Xcode工程并切换到该工程路径

    cd+路径

    4.2 使用命令pod init在当前文件夹下生成一个Podfile文件

    4.3 编辑该文件,在该文件中输入如下信息:

    该文件中的命令格式为:pod '第三库名称', '版本号';第三库名称,名称要正确,不然有可能安装失败。
    其中版本号标识区别:
    >= 1.0 至少版本为1.0
    ~> 1.0 兼容1.0版本的最新版
    == 1.0或1.0 都表示指定版本

       $ vim Podfile
       platform :ios, '7.0'
       pod "AFNetworking", "~> 2.5.4"
       pod 'SDWebImage'
       pod 'KVNProgress'
    

    4.4 安装工程依赖的第三方库,若出现pods installed字样表示安装成功

    $ pod install
    Updating local specs repositories
    Analyzing dependencies
    Downloading dependencies
    Installing AFNetworking (2.5.4)
    Installing KVNProgress (2.2.2)
    Installing SDWebImage (3.7.3)
    Generating Pods project
    Integrating client project
    [!] Please close any current Xcode sessions and use `CocoaPodsDemo.xcworkspace` for this project from now on.
    Sending stats
    Pod installation complete! There are 3 dependencies from the Podfile and 3 total
    pods installed.
    

    4.5 关闭Xcode工程,打开.xcworkspace文件。

    4.6 在工程中导入第三库文件,只需要#import <AFNetworking.h>类似的即可,开启CocoaPods之旅。

    5. 补充:安装好以后在新的项目中使用

    在终端中敲入命令
    1.cd +项目的路径
    2.pod init
    3.vim Podfile(修改这个文件)
    4.pod install(出现pods installed表示成功)
    5.打开.xcworkspace文件就打开工程了就可使用
    6.添加第三方库:点击Pods项目中的Podfile文件添加,然后点击install Pods(这种是安装了一个插件可以显示CocoaPods)
    7.添加新库时,也可以添加完用端口敲命令方式(添加完成退出保存:先按esc,然后 :wq)
    添加新库时候还可以直接打开写添加,opten后写完直接关掉,直接pods install即可安装成功
    8.删除已安装的第三方库:终端中进入podfile文件 (vi podfile),然后直接去掉即可,再pod install。为省时间也可pod install --no-repo-update(不用每次都去仓库检测,更新...)

    添加第三方 pod的第三方 pod成功 点击Pods项目中的Podfile文件添加 再点击install Pods(这种是安装了一个插件可以显示CocoaPods) 更新成功 打开文件修改

    6.使用过程中遇到的各种问题Bug

    6.1 pod setup更新设置仓库时无法成功,报错如下2种:

    • 错误如图:
    [!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.
    You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.
    
    错误1 错误2
    • 错误原因:

    这些错误说明某些环境原因导致pod更新不了,可能原因有:1)gem版本太低;2)github无法连接;3)cocoapods目录下的配置信息错误;我们可以一个一个来排除

    • 解决办法:
    删除以后重新pod更新,过一段时间更新到100%成功

    敲入以上命令时,终端上是这个样子的(由于太长,仅截取前面一部分):

    看到这里,说明你已经安装成功了。
    相关链接:https://www.jianshu.com/p/90ca71b3b94a

    6.2 因为git没有更新造成的问题

    错误

    6.3 CocoaPods更新慢的解决办法

    使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动;原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少,加参数的命令如下;
    cocoaPods安装的一些问题和具体使用时,发现很多cocoaPods的教程都不太适用,查看此链接或许有帮助:http://www.jianshu.com/p/5b3ba1297abb

    pod install --verbose --no-repo-update
    pod update --verbose --no-repo-update
    或者
    pod install --no-repo-update
    pod update --no-repo-update
    

    6.4 因为修改了项目中pods文件导致安装不上(知本家)

    场景及问题:合作开发时,其他开发者的cocoapods版本为1.7.2,当前自己的版本为最新版1.9.0。项目的source在以前其他开发者的cocoapods版本中更改了source,如下图。其他开发者可以正常pods,自己pods的时候就会出现下图报错的错误提示,时间很久,pods不成功。

    解决:pods的时候先将这句话 source 'https://github.com/CocoaPods/Specs.git’ 去掉,再按平时流程一样pods即可成功。成功之后再把这句话加上去,上传代码到git,这样其他小伙伴就不影响。暂时未找到比较好的解决办法。

    修改了source 没有被修改,正常的情况 pods会很久 报错

    6.5 错误之ERROR: Could not find a valid gem 'cocoapods' (>= 0)...- bad response Not Found 404(新电脑安装)

    https://www.jianshu.com/p/753678a21f0c

    6.6 错误之[!] CDN: trunk Repo update failed(新电脑安装)

    https://www.jianshu.com/p/bf1cbe49cb5d

    6.7 错误之inherit! :search_paths

    错误 删除即可pod成功 成功

    6.8 错误之网络不好

    如下图提示为网络不好的意思,需要换个快的网络或者连手机热点看看。网络正常快速即可成功

    网络不好的原因 网络不好的原因 网络不好的原因

    6.9 错误之cocoapods版本太低和platform

    错误之cocoapods版本太低和platform 放开platform

    6.10 CocoaPods更新慢的解决办法

    使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动;原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:

    pod install --verbose --no-repo-update
    pod update --verbose --no-repo-update
    或者
    pod install --no-repo-update
    pod update --no-repo-update
    

    6.11 cd 项目路径不正确进行 pod install 报错

    cd 项目路径不正确进行 pod install 报错 cd 正确

    6.12 新项目进行 pod init 报错

    https://blog.csdn.net/qq_42148925/article/details/127958166

    新项目进行 pod init 报错 输入这个即可:sudo gem update xcodeproj --pr 报错信息翻译 报错信息翻译

    7. 常用的命令行

    1.查看cocoapods版本 pod --version
    2.搜索框架 pod search AFNetworking
    3.ls -a:是显示该文件夹下的所有隐藏文件,会发现有一个.git文件说明该文件夹是一个git仓库,可以使用git的方法更新该文件夹的内容
    4.ls -l:可以列出目录下的所有文件的名字,还可显示文件的详细信息(文件还是目录,权限,大小,所有者,修改时间等)
    5.ls -la :显示当前目录下包括隐藏文件/目录的所有文件的详细信息
    6.Mac显示默认隐藏的文件:defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
    7.Mac关闭显示默认隐藏的文件:defaults write com.apple.finder AppleShowAllFiles No && killall Finder 2

    8.私有库Pod

    开发中可能会用到自己的私有库,可以通过直接拖入到开发的项目中集成,还有一种可以像其他第三库比如AFNetworking一样通过CocoaPods的方式pod集成导入开发的项目中。这个需要先将自己的私有库demo放在github(其他也可以如码云)上面,通过相关关联配置,最后再pod到自己的开发项目中。

    相关链接:
    https://blog.csdn.net/IT00544/article/details/113773892
    https://juejin.cn/post/7059679100423634975
    https://juejin.cn/post/7081436335721938952

    相关文章

      网友评论

        本文标题:CocoaPods

        本文链接:https://www.haomeiwen.com/subject/fnjrkttx.html