iOS 建立自己本地cocoapod库

作者: 水在玩焱 | 来源:发表于2017-05-18 23:51 被阅读449次

    目录

    <h2 id=1>创建与维护</h2>

    下面详细分为7个步骤来学习和掌握这项技能

    <h3 id="1.1">创建并设置一个私有的Spec Repo</h3>

    1. 首先我们在github上建立一个自己的仓库 LocalPod(仓库名字任意)

    2. 在本地创建Spec Repo

       # pod repo add [Private Repo Name] [对应的.git url]
       $ pod repo add LocalPod https://github.com/Maoyis/LocalPod.git
      

    进入 ~/.cocoapods/repos 目录此时就能看到我们自己的pod仓库了

    MyPodFolder.png

    PS: 如果有其他合作人员共同使用这个私有Spec Repo的话在他有对应Git仓库的权限的前提下执行相同的命令添加这个Spec Repo即可。

    <h3 id="1.2">创建PodLib(针对从零创建lib)</h3>

    建好本地仓库后我们来建一个自己的库(lib), 如果已经有一个lib只需要添加并配置相应的podspec文件就行可忽略此步直接到下一阶段。不过看看总不会有坏处的(๑•ᴗ•๑)

    1. 创建一个lib(库),详见pod lib创建自己的lib。开始前首先得给我们的lib建一个版本库(git,svn都行)创建一个

    2. 跳转到一个用来保存自己库的文件夹下来创建一个lib(推荐单独创建一个专门用来保存自己的库),并在该目录执行

       #pod lib create [libName]
       $ pod lib create QXFullGestureView
      

    执行后正常情况下会有一个交互:
    lib使用的语言swif/ObjeC

    是否创建一个demo

    选择什么测试框架 [ Specta / Kiwi / None ]

    是否进行UI测试

    类的前缀

    然后就会在该目录创建一个lib

    libFolder.png
    1. 添加相关要生成lib的文件到Pod文件夹:(libName)/(libName)/Classes, 当然还要删除ReplaceMe.m文件(只要在提交前删除掉就好)
    addFile.png
    1. 该步骤非必要,主要正对pod lib creat时创建过demo时观察变化

       $cd Example
       $pod update
      

    此时再展开工程会发现文件已经添加到了项目中,但却在开发模式pod文件加下(Development Pods)。

    developPod.png

    <h3 id="1.3">创建lib所对应的podspec文件-(针对已存在的lib)</h3>

    官方教程

    1. 在lib文件夹下执行
      pod spec create QXFullGestureView https://github.com/Maoyis/MyLibrary.git

    <h3 id="1.4">配置podspec与验证</h3>

    1. 配置MyLibrary.podspec(ruby文件)详情

       s.name             = 'QXFullGestureView ' ##名字必须与libname相同
       s.version          = '0.1.0'     #版本必须为0.0.0格式
       s.summary          = 'all gesture view' #关于库的一个简短描述
       s.description      = <<-DESC
       TODO: 备注文字(较长描述)
                                   DESC
       #是否支持arc
       s.requires_arc = true
       #文件主页
       s.homepage         = 'https://github.com/Maoyis/QXFullGestureView '
       #开源协议
       s.license          = { :type => 'MIT', :file => 'LICENSE' }
       #作者信息
       s.author           = { 'Maoyis' => 'xxxxxx@qq.com' }
       #源文件所在网络路径
       s.source           = { :git => 'https://github.com/Maoyis/QXFullGestureView .git', :tag => s.version.to_s }
       #支持版本
       s.ios.deployment_target = '7.0'
       #公开头文件名
       s.public_header_files = 'Pod/Classes/**/*.h'
       #依赖的框架
       s.frameworks = 'UIKit', 'MapKit'
       #依赖库
       s.dependency 'AFNetworking', '~> 2.3'
      
    2. 完成上面主要配置(并非所有配置)后,验证一下这个文件是否可用。执行:

       #测试podspec检查是否存在问题
       $ pod lib lint 
       //通过结果
        -> QXFullGestureView (0.1.0)
      
       QXFullGestureView passed validation.
       
       
       # 如果失败也可以试试, 针对无法正确找到lib.podspec
       $ pod lib lint --source https://github.com/Maoyis/QXFullGestureView .git
             
       #如果有警告可以忽略
        $ pod lib lint --allow-warnings 
      

    <h3 id="1.5">本地测试与提交</h3>

    1. 准备:创建一个项目(如果没pod lib创建或没创建demo 否则跳过步骤1)配置Podfile

    platform :ios, '7.0'

    pod 'MyLibrary', :path => '……/podTest/QXFullGestureView ' #指定路径

    pod 'MyLibrary', :podspec => '……/QXFullGestureView .podspec' #指定podspec文件


    pod install
    
    1. 编写代码,导入lib验证是否可以正常使用

       pod lib lint
      

    由于人处于开发阶段,此时再展开工程会发现文件已经添加到了项目中,但却在开发模式Development Pods文件夹下(Development Pods)。

    1. 将lib提交到远端仓库

       #跳转到lib目录下
       $cd [libFolder] 
       
       #由于lib已经在git版本控制下就不需要初始化,直接添加文件提交
       $ git add .
       $ git commit -s -m "Initial Commit of Library"
       
       #添加远端仓库(这里要用到第二个空仓库存储lib区别第一个用来存储本地Spec Repo)
       $ git remote add origin https://github.com/Maoyis/QXFullGestureView .git           
       
       #提交到远端仓库
       $ git push origin master  
      
    2. 由于podspec文件中获取Git版本控制的项目还需要tag号,所以我们要打上一个tag,

       $ git tag -m "release 0.1.0" "0.1.0"
       $ git push --tags     #推送tag到远端仓库   
      

    接下来我们就要发布测试版为正式版了(提交自己的podspec到私有或公有Spec Repo)

    <h3 id="1.6">向私有的Spec Repo中提交自己的podspec</h3>

    1. 提交podspec到自己的Spec Repo

       #pod repo [第一步建立的本地仓库] [要上传的podspec]
       $ pod repo push LocalPod QXFullGestureView.podspec
      

    执行完毕后本地查看本地仓库就可以看到对应的 文件夹/版本文件夹/上传的podspec

    屏幕快照 2017-05-18 下午11.33.12.png

    并且你会看到

        Pushing the `QXSpecRepo' repo
        To https://github.com/Maoyis/LocalPod.git
    

    对,他还会自动推送最新的Space Repo 到绑定的版本控制中心

    屏幕快照 2017-05-18 下午11.47.06.png
    1. 搜索自己的lib

       pod searchQXFullGestureView
      

    到这里一个属于自己的pod库就大功告成了

    <h3 id="1.7">在自己项目中使用</h3>

    这里既不赘述了,唯一需要注意的是pod install、Updat默认不会去本地Pod文件夹查找lib,只会默认在master文件夹中寻找
    所以我们必须在Podfile文件中加入查找源

        #我们自己的私有spec仓库的地址
    source 'https://github.com/Maoyis/LocalPod.git'  
    #官方仓库的地址
    source 'https://github.com/CocoaPods/Specs.git' 
    
    屏幕快照 2017-05-18 下午8.49.21.png

    <h3 id="1.8">更新维护podspec</h3>

    1. 添加新文件到Classes, 修改对应的podspec配置

    2. 验证配置无误

       $pod lib lint
      
    3. 更新demo调用(非必要影响步骤)
      pod update

    4. 提交到远端代码托管服务器

       $ git add .
       $ git commit -m"new version"
       $ git push origin master
       # 打上新tag
       $ git tag -m"version 1.0.1" "1.0.1"
       $ git push --tags
      
    5. 提交本地pod仓库

       $ pod repo push QXSpecRepo MyLibrary.podspec
      

    <h2 id="2"> 移除本地仓库</h2>

        # pod repo remove [Private Repo Name]
        $ pod repo remove QXSpecRepo
    

    删除前:

    remove_before.png

    删除后:

    MyPodFolder.png

    <h2 id="3">移除本地仓库中的lib.podspec</h2>

    前往~/.cocoapods/repos 将其对应文件夹文件夹删除,更新本地仓库

     $ git add --all .
     $ git commit -m "remove unuseful pods"
     $ git push origin master
    

    <h2 id="4">Trunk发布自己的Pods</h2>

    1. 注册Trunk获取推送资格

       #通过邮箱和用户名注册
       #pod trunk register [your mailbox] [your Name] --description='mybook'
       $ pod trunk register youaolanyi@foxmail.com Maoyis --description='mybook'
      
    2. 等到到一份邮件,点击邮件中的链接后验证是否可以查到自己信息:

       pod trunk me
      
    3. 完成准备工作后就可以push spec到cocoapod了

       #在工程根目录(包含有.podspec)    
       pod trunk push *.podspec
      

    pod trunk push 命令会首先验证你本地的podspec文件(是否有错误),之后会上传spec文件到trunk,最后会将你上传的podspec文件转换为需要的json文件。


    上传结果
    1. 更新本地repo

       #更新方式有多种,个人觉得这个比较保险
       pod setup
      
    2. 查看本地文件夹(~/.cocoapods/repos/master/Specs)中repo master是否同步了自己的库

    <h2 id="5">参考申明</h2>

    1. 《使用Cocoapods创建私有podspec》
    2. 官方文档

    相关文章

      网友评论

        本文标题:iOS 建立自己本地cocoapod库

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