美文网首页
iOS编程Cocoapods工具的使用

iOS编程Cocoapods工具的使用

作者: 单线程Jack | 来源:发表于2019-07-22 15:03 被阅读0次

    1 CocoaPods 的安装

    1.1 作用:

    帮助管理和维护第三方框架,快速的搜索到第三方框架, 然后自动集成到工程里面来, 并编译成一个libPod.a的静态库给我们项目用

    1.2 理解:

    1.2.1 什么是gem

    Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.org/ )源来查找、安装、升级和卸载软件包,非常的便捷。

    1.2.2 常用命令

    $ gem --version (查看gem版本)
    
    $ gem update --system(更新gem)
    
    $ gem sources(查看数据源)
    
    $ gem sources --remove [https://rubygems.org/](https://rubygems.org/)(删除数据源)
    
    $ gem sources -a [https://ruby.taobao.org/](https://ruby.taobao.org/)(添加数据源)
    
    $ gem search 软件包关键字(搜索软件包)
    
    $ gem install 软件包名称(安装软件包)
    
    $ gem install cocoapods --pre(安装上一个版本软件包)
    
    $ gem uninstall 软件包名称(卸载安装包)
    
    

    注意: 以上命令最好在使用之前, 都添加sudo,代表以管理员身份运行该命令,因为有可能安装软件包的过程当中, 需要创建文件等等, 必须有管理员权限才能操作

    1.3 安装:

    $ sudo gem install cocoapods 
    
    *   执行完这句如果报告以下错误: 
    
    ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why: 
    
    Unable to download data from [https://rubygems.org/](https://rubygems.org/) - Errno::ETIMEDOUT: Operation timed out
    
    connect(2) ([https://rubygems.org/latest_specs.4.8.gz](https://rubygems.org/latest_specs.4.8.gz)) 
    
    ERROR: Possible alternatives: cocoapods 
    
     则需要更新一下ruby的源 
    
    $ gem sources  (查看当前ruby的源)
    
    $ gem sources --remove [https://rubygems.org/](https://rubygems.org/)  (删除数据源)
    
    $ gem sources -a [https://ruby.taobao.org/](https://ruby.taobao.org/) (添加数据源)
    
    *   如果gem太老,可以尝试用如下命令升级gem 
    
    $ sudo gem update --system(注解: sudo 是以超级管理员的身份操作)
    
    升级成功后会提示: RubyGems system software updated 
    
    然后重新执行安装下载命令 
    
    $ sudo gem install cocoapods
    
    验证成功:$ pod --version
    
    接下来进行安装,执行: 
    
    $ pod setup
    
    *   升级到10.11, CocoaPods报错: command not found, 解决方案
    
    $ sudo gem update --system
    
    $ sudo gem uninstall cocoapods
    
    $ sudo gem install -n /usr/local/bin cocoapods
    
    随后如果出现下列错误
    
    [!] An error occurred while performing `Git pull` on repo `master`.
    
    [!] /usr/bin/git pull --ff-only
    
    原因: Cocoapods的分支不支持当前最新的Xcode版本
    
    解决办法: 删除master分支 重新建立新的分支
    
    $ sudo rm -fr ~/.cocoapods/repos/master
    
    $ pod setup
    
    2 CocoaPods 的简单使用

    2.1 步骤

    1> Xcode新建一个项目,名字Test
    
    2> 终端中,cd到项目总目录(注意:包含Test.xcodeproj的那个目录)
    
    3> 执行命令 $ pod init 建立Podfile配置文件
    
    4> 打开podfile文件,不要选择文本编辑打开方式,选择Xcode打开,编辑文件如下
    5> 执行 $ pod install 现在打开项目不是点击 Test.xcodeproj了,而是点击 Test.xcworkspace 
    
    image

    2.2 说明

    生成的重要文件Podfile.lock 用来记录着上一次下载的框架版本

    2.3 pod install 和 pod update 区别

    install 如果Podfile.lock文件存在, 直接从此文件中读取框架信息下载安装,如果不存在, 依然会读取Podfile文件内的框架信息

    update 不管Podfile.lock是否存在, 都会读取Podfile文件的的框架信息去下载

    主要区别在于, Podfile文件内的框架信息, 版本描述没有指定具体版本
    3 上传框架到CocoaPods
    3.1 CocoaPods机制图解

    image
    3.2 上传框架到CocoaPods

    1> 创建库工程, 添加源文件到Classes文件夹,文件路径 /test/Classes/Person.h Person.m文件

    2> 在远程github上创建仓库用来存放此库工程

    image

    3> 创建git并与远程仓库进行关联

    $ cd /Users/Funky/Desktop/test 
    
    $ git init(创建git)
    
    $ git add .(添加到暂存区)
    
    $ git commit -m 'create Person Class’ (提交文件)
    
    $ git remote add origin [https://github.com/funkyHS/testPerson.git](https://github.com/funkyHS/testPerson.git) (关联远程地址)
    
    $ git push origin master (提交推送到远程)
    

    4> 创建仓库的描述文件test.podspec

    $ cd /Users/Funky/Desktop/test

    $ pod spec create test(创建spec文件)

    生成test.podspec 使用Xcode打开进行编辑

    image

    $ git tag (查看tag记录)

    $ git tag ‘0.0.1’ (要与test.podspec中的s.version保持一致)

    $ git push --tags(提交推送到远程,成功后在远程release处可以看到提交的tag版本)

    5> 利用trunk将本地的spec文件上传到pods官方的索引库

    $ pod trunk register 123223223@qq.com 'funky' --verbose (注册trunk)

    成功后登陆上面的邮箱去激活 邮件中的地址

    $ pod trunk push test.podspec

    6> 测试,使用pod search 命令搜索自己的框架, 如果可以搜索到, 那么代表审核通过了

    4 CocoaPods****本地私有库的使用

    需求说明:testProject工程利用pods管理导入使用本地库文件

    4.1 步骤:

    $ cd /Users/Funky/Desktop/localLib/test
    
    $ git init
    
    $ git add .
    
    $ git commit -m 'create file’
    
    $ pod spec create test
    

    编辑test.podspec文件

    image
    $ cd /Users/Funky/Desktop/testProject
    
    $ pod init(生成Podfile文件)
    
    

    编辑Podfile文件

    image
    $ pod install (会验证test.podspec 填写信息是否正确)
    
    成功后打开testProject.xcworkspace项目,库文件在Pods/Development Pods中
    

    5 创建pods库的模版库
    (组件化快速生成测试工程常用)

    工程文件目录结构:/Users/Funky/Desktop/MyTestProject/testProject/Classes/Categories/(.h .m)
    
    需求:在MyTestProject文件夹下,快速创建关于Categories/(.h .m)的测试工程
    

    5.1 步骤:

    1> $ cd /Users/Funky/Desktop/MyTestProject
    
    2> $ pod lib create testProjectQuick
    
    
    image

    3> 用测试的库文件替换ReplaceMe.m文件

    image
    image

    4> $ cd /Users/Funky/Desktop/MyTestProject/testProjectQuick/Example

    $ pod install

    6 CocoaPods****远程私有库的使用

    6.1 ****机制图解

    image

    6.2 ****具体操作步骤

    1> 查看本地索引库
    
    $ pod repo
    
    master
    
    - Type: git (master)
    
    - URL:  https://github.com/CocoaPods/Specs.git
    
    - Path: /Users/Funky/.cocoapods/repos/master
    
    2> 在代码托管平台上添加公钥
    
    $ ssh-keygen(生成公钥)
    
    Enter file in which to save the key (/Users/Funky/.ssh/id_rsa): (直接回车)
    
    Enter passphrase (empty for no passphrase): (直接回车)
    
    Enter same passphrase again: (直接回车)
    
    生成的公钥所在路径 ~/.ssh/id_rsa.pub (用Xcode打开并复制)
    
    在coding上添加公钥
    
    3> 添加本地私有的索引库
    
    $ pod repo add TestProjectBase [git@git.coding.net](mailto:git@git.coding.net):funkyHS/TestProjectSpecs.git
    
    此时在~/.cocoapods/repos 路径下 可以看到TestProjectBase文件夹
    
    4> 查看 $ pod repo
    
    master
    
    - Type: git (master)
    
    - URL:  https://github.com/CocoaPods/Specs.git
    
    - Path: /Users/Funky/.cocoapods/repos/master
    
    TestProjectBase
    
    - Type: git (master)
    
    - URL:  git@git.coding.net:funkyHS/TestProjectSpecs.git
    
    - Path: /Users/Funky/.cocoapods/repos/TestProjectBase
    
    5> 然后在代码托管平台上(coding)创建一个TestProjectBase项目,用来存放基础组件的远程代码仓库
    
    $ cd /Users/Funky/Desktop/远程私有库/testProjectQuick (进入到基础组件的模版工程)
    
    $ git status
    
    $ git add .
    
    $ git commit -m ‘模版测试工程'
    
    6> 接着 修改编辑testProjectQuick 模版例子工程的testProjectQuick.podspec文件
    
    
    image

    $ pod lib lint (验证当前文件夹下的testProjectQuick.podspec文件编辑是否正确)

    $ pod spec lint (验证远程的是否正确,此时会报tag ERROR)

    $ git status

    $ git add .

    $ git commit -m '编辑spec文件'

    $ git remote add origin https://git.coding.net/funkyHS/TestProjectBase.git (将本地库与远程代码仓库进行关联)

    $ git push origin master (提交到远程仓库)

    $ git tag ‘0.1.0'

    $ git push --tags (将标签提交到远程)

    $ pod spec lint (再次验证)

    testProjectQuick.podspec passed validation.

    $ pod repo push TestProjectBase testProjectQuick.podspec (将podspec文件提交到本地的私有索引库TestProjectBase中: 地址 ~/.cocoapods/repos/TestProjectBase)

    image

    注意:提交后,依然会验证 podspec文件,验证通过后 会自动上传到在coding上的远程spec索引库

    $ pod search testProjectQuick

    -> testProjectQuick (0.1.0)

    testProjectQuick简介

    pod 'testProjectQuick', '~> 0.1.0'

    此时在进入主工程中修改podfile文件

    image

    $ cd /Users/Funky/Desktop/远程私有库/MyMainProject

    $ pod install

    大功告成,打开MyMainProject.xcworkspace,此时在pod中可以找到远程私有库的代码!

    相关文章

      网友评论

          本文标题:iOS编程Cocoapods工具的使用

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