iOS 远程私有库的搭建以及使用

作者: IIronMan | 来源:发表于2019-01-03 00:06 被阅读27次

思路:创建一个是远程私有spec仓库与本地私有spec仓库,也就是两个检索库,其他的和远程仓库没有太大的区别,区别是比远程公有仓库多两个检索库

总体内容

  • 1、创建 远程私有Spec仓库与本地 Spec Repo检索库
  • 2、创建Pod私有库所需要的项目工程文件,并上传到私有仓库
  • 3、创建Pod所对应的podspec文件, 并进行验证/测试
  • 4、创建JKCIOBase版本,并提交代码代码到JKCIOBase的远程仓库
  • 5、向私有的Spec Repo中提交podspec和远程私有spec仓库提交
  • 6、使用pod库来测试远程私有库的使用
  • 7、远程私有库与其他公有的混合使用
  • 8、远程私有库分支
  • 9、远程私有库添加依赖库
  • 10、远程私有库内容更新
  • 11、其他组内成员如何使用?

一、创建 远程私有Spec仓库与本地 Spec Repo检索库,远程的spec文件存在码云的私有仓库

  • 1.1、在 码云 创建私有的spec仓库,取名为JKCIOSpecs,一定要选择私有,不然谁都可以看到就没有什么意义了
    在码云创建自由的spec仓库,取名为JKCIOSpecs
  • 1.2、在本地添加一个spec仓库
    • (1)、查看本地spec路径

      pod repo
      
      查看本地spec路径
    • (2)、查看帮助信息,可以看到能够添加本地spec仓库的提示

      pod repo --help
      
      查看帮助信息,可以看到能够添加本地spec仓库的提示
    • (3)、开始在本地添加spec仓库
      具体的代码如下: JKCIOBase是本地spec仓库的名字,名字你自己可以随意取, git@gitee.com:JKWC/JKCIOSpecs.git是我们上面在码云创建的远程spec仓库的 ssh 路径,本地和远程关联起来

      pod repo add JKCIOBase git@gitee.com:JKWC/JKCIOSpecs.git
      

      添加后的效果如下

      command + shift +G 输入  ~/.cocoapods/repos
      
      相比之前多了一个JKCIOBase,也就是我们创建的本地私有spec仓库
      • 提示:如果你的公钥与私钥没有配置,那就设置下,在终端输入下面的代码,之后最后出现下图

        ssh-keygen
        
      6161546395798_.pic_hd.jpg
      • 去电脑上的 个人->.ssh 文件夹里面复制id_rsa.pub的内容到码云(在码云个人设置里面添加公钥),也可以使用快捷键:command + shift +G 输入 ~/.ssh 进入到 ssh文件里面
        `command + shift +G 输入 ~/.ssh`
      • 小提示:.ssh是隐藏文件,可以用 command+shift+.让隐藏文件显示出现,复制完记得再次输入command+shift+.让隐藏文件关闭,切记不要轻易删除任何隐藏文件
    • (4)、查看添加后的效果,在终端输入下面代码

      pod repo
      
    查看添加后的效果,在终端输入下面代码

二、创建Pod私有库所需要的项目工程文件(我们还在码云创建)

  • 2.1、我在码云创建的CIO时代的基础组件与功能组件库: JKCIOBase

    我在码云创建的CIO时代的基础组件与功能组件库: `JKCIOBase`
  • 2.2、把JKCIOBase克隆到本地,创建一个文件夹 JKRemoteLocal

    # 1、 cd导入路径
    cd 进入到JKRemoteLocal文件夹
    # 2、git clone 仓库到本地:clone自己仓库的地址
    git clone https://gitee.com/JKWC/JKCIOBase.git
    
  • 2.3、在本地 JKRemoteLocal/JKCIOBase 文件夹里面创建一个 JKCIOBase文件夹,同时创建一个JKCIOBaseDemo项目,与刚才创建的JKCIOBase同一个目录

    在本地 `JKRemoteLocal/JKCIOBase` 文件夹里面创建一个 `JKCIOBase`文件夹,同时创建一个`JKCIOBaseDemo`项目,与刚才创建的JKCIOBase同一个目录
  • 2.4、在与JKCIOBaseDemo 同级的文件夹JKCIOBase里面,我又创建了一个文件夹JKCategory,里面拖入了一个UIView的分类UIView+JKLayout

三、创建Pod所对应的podspec文件, 并进行验证

  • 3.1、在与JKCIOBaseDemo同目录下创建文件 JKCIOBase.podspec

    cd 进入到JKCIOBase
    

    提示:JKCIOBase 是第一个文件夹,也就是 JKCIOBase与JKCIOBaseDemo所在的文件夹

  • 3.2、创建spec文件

    pod spec create JKCIOBase
    
创建spec文件
  • 3.3、修改spec文件,下面是我修改的内容

    Pod::Spec.new do |s|
    
       s.name         = "JKCIOBase"
       s.version      = "0.0.2"
       s.summary      = "JKCIOBase."
       s.description  = "JKCIOBase是CIO时代的基础组件,后续还会继续增加"
    
       s.homepage     = "https://gitee.com/JKWC/JKCIOBase"
       s.license      = "MIT"
       s.author             = { "JoanKingWC" => "JoanKingWC@163.com" }
       s.ios.deployment_target = "8.0"
       s.source       = { :git => "https://gitee.com/JKWC/JKCIOBase.git", :tag => "#{s.version}" }
       s.source_files  = 'JKCIOBase/**/*.{h,m}'
       s.requires_arc = true
    
    end
    

    提示:
    1、s.summary 要比 s.description
    2、s.homepage写JKCIOBase在码云的首页

    `s.homepage`写JKCIOBase在码云的首页
    3、s.sourceJKCIOBase的代码地址即可
    `s.source`写 `JKCIOBase `的代码地址即可
    4、s.source_files 不要写错,这里的路径是以 spec所在的目录开始寻找的,也就是以 JKCIOBase.podspec所在的目录开始寻找, JKCIOBase与JKCIOBase.podspec同级目录,取JKCIOBase下所有文件夹与.h.m文件
    s.source_files  = 'JKCIOBase/**/*.{h,m}'
    
  • 3.4、远程验证spec文件是否符合规则

    pod spec lint JKCIOBase.podspec
    

    提示:如果报错就看下我在远程公有库博客里面对于验证spec文件有问题的处理

四、创建JKCIOBase版本,并提交代码代码到JKCIOBase的远程仓库

  • 4.1、 cd JKCIOBase.podspec所在的目录

    cd JKCIOBase.podspec所在的目录
    
  • 4.2、创建版本 tag: 要与 JKCIOBase.podspec里面的版本号保持一致

    git tag '0.0.1'
    
  • 4.3、提交版本号

    git push origin 0.0.1
    

    提示:如果你提交tag失败了,请关联仓库,后面加你的仓库地址,切记是代码仓库地址,不是远程spec仓库地址

    git remote add origin https://github.com/JoanKing/JKGCDTimer.git
    
  • 4.4、提交本地JKCIOBase的内容
    打开Xcode,在 Source Control 里面 commit 选择同时提交到远程 JKCIOBase仓库

    打开Xcode,在 `Source Control` 里面 `commit` 选择同时提交到远程 `JKCIOBase`仓库

五、向私有的Spec Repo中提交podspec和远程私有spec仓库提交

  • 5.1、在里面我们已经验证过 spec文件是符合规定的,向私有的Spec Repo中提交 spec文件

    pod repo push JKCIOBase JKCIOBase.podspec 
    

    提示:如果你在验证的时候有警告,只要没有报错可以加上 --use-libraries --allow-warnings,如下:

    pod repo push JKCIOBase JKCIOBase.podspec --use-libraries --allow-warnings
    
    向私有的Spec Repo中提交 spec文件
  • 5.2、我们验证下是否成功

    进入本地 JKCIOBase 仓库,上面的没有报错,在JKCIOBase里面出现JKCIOBase仓库就是成功了,JKCIOBase里面会存着每个版本的spec文件,这里展示了 0.0.2 版本的 spec 文件

    command + shift +G 输入 ~/.cocoapods/repos
    
    我们验证下是否成功
  • 5.3、远程私有spec仓库提交
    其实写这个5.3是多余的,因为在5.2里面,我们把spec文件提交到本地的时候,同时也就提交到了我们创建的远程 spec仓库,也就是我们在 1.1 创建的 JKCIOSpecs,我们看下JKCIOSpecs里面,存放也是spec的各个版本,如下图

六、使用pod库来测试远程私有库的使用

  • 6.1、在桌面创建一个项目 JKRemoteLocalTest

  • 6.2、创建Podfile文件

    cd JKRemoteLocalTest文件夹
    pod init
    
  • 6.3、修改 Podfile文件的内容

    source 'git@gitee.com:JKWC/JKCIOSpecs.git'
    
    platform :ios, '9.0'
    
    target 'JKRemoteLocalTest' do
    
        use_frameworks!
    
        pod 'JKCIOBase'
    
    end
    

    提示:source 'git@gitee.com:JKWC/JKCIOSpecs.git'是远程spec仓库的地址,不可少,因为 pod 'JKCIOBase'是要从 source资源里面去找spec文件来下载相应的版本的 JKCIOBase

  • 6.4、查看导入的效果


    JKCIOBase成功导入

七、远程私有库与其他公有的混合使用

  • 7.1、如下 Podfile文件 内容,导入 SDWebImage 是不会成功的

     source 'git@gitee.com:JKWC/JKCIOSpecs.git'
    
     platform :ios, '9.0'
    
     target 'JKRemoteLocalTest' do
    
        use_frameworks!
    
        pod 'JKCIOBase'
        pod 'SDWebImage'
    
    end
    
  • 7.2、解决 7.1 导入 SDWebImage 不成功的问题

    • 分析 SDWebImage 是属于pod 公有库的资源,在 source 'git@gitee.com:JKWC/JKCIOSpecs.git'是不可能找到的,所以要在公有库的资源里面寻找,查看公有库资源路径

      pod repo
      
      pod repo查看spec路径
      • 如下写 Podfile 文件才是正确的

        source 'git@gitee.com:JKWC/JKCIOSpecs.git'
        source 'https://github.com/CocoaPods/Specs.git'
        
        platform :ios, '9.0'
        
        target 'JKRemoteLocalTest' do
        
            use_frameworks!
        
            pod 'JKCIOBase'
            pod 'SDWebImage'
        
        end
        
  • 7.3、查看导入远程私有库与公有库的效果


    查看导入远程私有库与公有库的效果

八、远程私有库分支

  • 8.1、这个有关分支的问题,我在远程共有库已经阐述过了这里我就在JKCIOBase添加一个JKKit
    在`JKCIOBase `添加一个JKKit
  • 8.2、在spec文件里面设置一下JKCategoryJKKit分支的东西
    `JKCategory`与`JKKit`分支
  • 8.3、把版本改为 0.0.6,打tag提交代码如下

    #  cd 进入spec所在的目录
    cd 进入 JKCIOBase所在的目录,也就是spec文件所在的目录
    # 打0.0.6的tag
    git tag '0.0.6'
    # 提交 tag到 远程私有仓库
    git push origin 0.0.6
    # 使用xcode提交代码到远程仓库
    
  • 8.4、提交spec文件到本地私有spec仓库(也就是我们创建的JKCIOBase)

    pod repo push JKCIOBase JKCIOBase.podspec --use-libraries --allow-warnings
    
    提交spec文件到本地私有spec仓库(也就是我们创建的JKCIOBase)
  • 8.5、在使用 command + shift +G 输入 ~/.cocoapods/repos里面的 JKCIOBase就可以看到里面多了一个新的版本,我这里提交的是 0.0.6

    查看是否提交成功
  • 8.6、测试一下是否设置分支成功

    cd 进入上面测试`JKRemoteLocalTest`
    # 更新库
    pod update 
    
分支创建成功

九、远程私有库添加依赖库

  • 9.1、给JKCIOBase添加依赖库 'AFNetworking''MJRefresh',给JKKit添加一个依赖库 Masonry
    给`JKCIOBase`添加依赖库 `'AFNetworking'`与`'MJRefresh'`,给`JKKit`添加一个依赖库 `Masonry`
  • 9.2、打tag,提交spec等等和 里面的一样,不再写了
  • 9.3、查看是否依赖第三方库成功。同样更新 JKRemoteLocalTest
    依赖第三方库成功

十、远程私有库内容更新

远程私有库内容更新的更新其实和里面一样的步骤,修改JKCIOBase里面的内容,更改spec内的版本号,有要修改的就修改内容,打版本tag,提交tag到远程私有仓库,提交spec文件打破本地spec仓库与远程私有spec检索仓库

相关文章

  • iOS 远程私有库的搭建以及使用

    思路:创建一个是远程私有spec仓库与本地私有spec仓库,也就是两个检索库,其他的和远程仓库没有太大的区别,区别...

  • iOS 组件化开发(二):子库和私有库升级与维护

    iOS 组件化开发(一):远程私有库的基本使用已经实战演示了远程私有库的基本操作。本文说下远程私有库的更新与子库。...

  • 组件化(第二篇)

    组件化 一、本地私有库方案优化二、远程私有库三、如何使用远端私有库四、远程私有库的升级五、远程私有库依赖问题六、远...

  • pod 私有库搭建流程

    Pod私有库是什么: 搭建步骤 1.创建远程索引私有库 2.创建远程私有库 3.在本地添加一个自己的远程索引库 4...

  • cocopods私有库的更新

    在上一篇iOS组件化开发,利用cocopods 创建自己的远程私有库讲到了如何搭建自己的私有库,这篇文章主要讲讲怎...

  • iOS 组件化开发(二):远程私有库的更新与子库

    在上一篇【iOS 组件化开发(一):远程私有库的基本使用】中我们已经实战了远程私有库的基本操作,但是组件不可能上传...

  • iOS创建私有库

    iOS创建私有库 创建本地私有库索引和远程私有库索引关联 pod repo addSGSpecshttp://12...

  • iOS开发私有库的创建

    近期由于自己在玩玩私有库和公有库,记录下来自己搭建的过程。私有库可以本地和远程,这里主要是将远程库的搭建。 当然在...

  • 搭建iOS远程私有库

    组件化 为什么要组件化: 随着项目的不断迭代,各个模块会越来越复杂,各个模块相互依赖,而且每个模块可能会有共同的业...

  • 组件化(二):远程私有库的升级+依赖+私有库分支

    组件化学习之路文章集合: 组件化(一):搭建远程私有库 上一篇文章我们介绍了如何搭建自己的远程私有库,本篇我们就继...

网友评论

    本文标题:iOS 远程私有库的搭建以及使用

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