美文网首页
Cocoapods简单使用及机制理解(2)-私有远程仓库

Cocoapods简单使用及机制理解(2)-私有远程仓库

作者: Jacob_LJ | 来源:发表于2017-11-19 20:13 被阅读13次

    Cocoapods

    本期目标:创建私有远程仓库并集合到 cocoaPods 中

    目的是模仿 cocoaPods 的管理库机制,熟悉私有远程库管理操作

    1、创建私有版本库(repo)

    这个版本库就如同 cocoaPods 中的repo 一样,用于管理众多代码库的 spec 信息的。如图:


    这个是通过 pod setup 命令后生成的,其中 repos中的 master 就是通过 cocoaPods 管理库spec 检索库
    当创建完自己的管理检索库后会如下图所示:

    首先,创建一个像master一样的存放版本描述文件的git仓库,因为是私人git仓库,我们选择码云,创建远程私有仓库(因为是免费的)或者也可以在GitHub上创建($7/month)。

    码云为例

    创建版本描述仓库

    将这个远程的私有版本仓库添加到本地cocoaPods 的 repo 中

    pod repo add MyRepo https://gitee.com/Jacobv587/MyRepo.git
    
    查看在 Finder 目录 ~/.cocoapods/repos, 可以发现增加了一个 MyRepo 的储存库 查看当前本地 cocoaPods 管理的所有库信息

    2、创建代码库

    回到码云
    创建私人代码库,用于存放你写的工具代码,创建时添加MIT LicenseREADME

    将代码仓库clone到本地,添加你的代码文件、仓库名.podspec 描述文件,还有.swift-version
    clone 代码仓库可以通过 Xcode 执行
    进入clone界面


    填上代码库 git clone地址

    验证用户信息
    image.png

    完成后如下:


    添加文件方法:
    .swift-version文件用来知道swift版本,用命令行创建。
    echo "3.0" > .swift-version
    

    .podspec 文件是你这个代码库的pod描述文件,可以通过pod指令创建空白模板:

    pod spec create MyAdditions
    

    如下为创建.spec 后修改文件,参照如下更改即可

    Pod::Spec.new do |s|
      s.name         = "MyAdditions" #项目名
      s.version      = "0.0.1" # 版本号 与 你代码仓库的 tag 对应
      s.summary      = "MyAdditions的描述"
      s.description  = "A short description of MyAdditions. just for testing" #这个描述需要比s.summary长
      s.homepage     = "https://gitee.com/Jacobv587/MyAdditions" #代码仓库主页
      s.license      = "MIT" # 开源证书
      s.author       = { "Jacob" => "xxxxx@qq.com" } # 作者信息
      s.platform     = :ios #指定库是适配平台,否则检测shi,
      s.source       = { :git => "https://gitee.com/Jacobv587/MyAdditions.git", :tag => "#{s.version}" }  #你的代码仓库地址,不能用SSH地址
      s.source_files = "MyAdditions", "MyAdditions/**/*.{h,m}" # 让别人集合代码的位置, MyAdditions/**/*.{h,m} 表示 在.spec文件同层级下MyAdditions文件夹下所有的.h和.m文件,**表示问价夹统配符
    end
    

    然后开始验证我们的仓库配置是否正确,并按照要求进行修改
    cd 到代码仓库

    //本地验证库,不会检查 spec 中的 s.source 中的git路径和 tag 信息
    pod lib lint
    //远程验证,会检查 spec 中的 s.source 中的git路径和 tag 信息
    pod spec lint
    

    一般出现错误警告,需要添加 --private 或者 --allow-warnings,就可以通过验证

    pod lib lint --private
    

    验证成功后出现

     -> MyAdditions (0.0.1)
     
    MyAdditions passed validation.
    

    3、将描述文件推送到版本库

    将刚才修改的本地代码库项目,打上标签,推送远程代码仓库,注意打的 tag 号需要与.spec 中的 s.version 描述对应

    //cd 到项目目录
    //打标签 git tag '0.0.1'
    //查看本地标签 git tag
    //将本地标签推送到远程库上 git push --tags
    

    最后将我们的代码仓库的描述信息(.spec),push 到我们的版本仓库

    pod repo push MyRepo MyAdditions.podspec
    

    这时会对远程仓库进行验证,成功的话就会在 ~/.cocoapods/repos/MyRep中发现新增的仓库描述信息了

    若是出现错误信息

    [!] The repo `MyRepo` at `../.cocoapods/repos/MyRepo` is not clean
    

    更新下我们的版本库,

    pod repo update MyRepo
    

    再继续上传即可。

    pod repo push MyRepo MyAdditions.podspec 的过程就是

    1. 验证 MyAdditions.podspec 文件
    2. 拉取远程版本库 MyRepo
    3. 添加 MyAdditions.podspec 到版本库中
    4. push 到远程

    添加完成后我们就可以在pod中搜索

    pod search MyAdditions
    
    -> MyAdditions (0.0.1)
       Some category of the framework and UIKit
       pod 'MyAdditions', '~> 0.0.1'
       - Homepage: https://gitee.com/Jacobv587/MyAdditions
       - Source:   https://gitee.com/Jacobv587/MyAdditions.git
       - Versions: 0.0.1 [MyRepo repo]
    (END)
    

    4、私人pod库的使用

    使用私人pod库的需要在Podflie中添加这句话,指明你的版本库地址。

    source ‘https://gitee.com/Jacobv587/MyRepo.git’
    

    注意是版本库的地址,而不是代码库的地址

    若有还使用了公有的pod库,需要把公有库地址也带上

    source 'https://github.com/CocoaPods/Specs.git'
    

    最后的Podflie应该是这个样子

    source 'https://github.com/CocoaPods/Specs.git'
    source ‘https://gitee.com/Jacobv587/MyRepo.git’
    
    platform :ios, '8.0'
    
    target ‘MyPodTest’ do
    use_frameworks!
    
    pod ‘MyAdditions’ #我们的私有库
    pod ‘AFNetworking’
    
    end
    

    5、更新代码库时,更新本仓库信息

    当代码库代码有变更时,本地代码库及远程库应该需要更新 tag 号,同时需要将本地代码库的 spec 信息上传到私有版本仓库中。

    1. 本地代码修改后,同时更新 spec 的 s.version 为0.0.2,将本地代码库修改push到远程代码库。
    2. 本地代码库更新 tag :git tag ‘0.0.2’
    3. 将0.0.2的 tag push 到远程库中:git push --tags
    4. 往私有远程版本库推送最新 spec 文件:pod repo push MyRepo MyAdditions.podspec

    剩下的就是自己亲自动手试试了。。。

    以上大部分操作流程均参考自该文章,当上述流程均是本人亲测后一一写上的,如有纰漏欢迎指正。

    相关文章

      网友评论

          本文标题:Cocoapods简单使用及机制理解(2)-私有远程仓库

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