美文网首页iOS开发技巧
Swift 组件化开发之创建远程私有库

Swift 组件化开发之创建远程私有库

作者: Kity_Pei | 来源:发表于2019-08-05 21:18 被阅读0次

    好好学习,天天向上

    前言

    组件化的优点

    优点

    • 降低耦合度
    • 组件单独开发,独立测试
    • 多人协作开发

    缺点

    • 版本同步的问题

    组件化划分

    基础组件

    基础配置(经常用到的宏,常量),分类,网络(AFN、SDW二次封装)、工具类(日期时间的处理,文件处理,设备处理)

    功能组件

    控间(弹幕、轮播器、选项卡);功能(断点续传,音频处理)

    业务组件

    业务线一,业务线二

    正文

    前面都是开场白,直接进入主题

    步骤归纳:

    1. 创建远程索引库
    2. 将远程索引库添加到本地
    3. 创建本地私有库,完成测试
    4. 修改Spec文件
    5. 提交私有库代码并增加tag
    6. 提交spec至私有索引库
    7. 测试

    步骤详细说明:

    0.插播一下即将用到的pod命令

    • pod repo add 索引库名称 索引库地址: 添加自己的索引库
    • pod lib create 组件名:在本地创建一个基于pod模板的git仓库
    • pod lib lint: 本地库验证
    • pod spec lint: 远程库验证
    • pod repo push 索引库名称 .podspec文件: 先将pod索引添加到本地的索引库,然后会自动推送到远程的索引库

    1. 创建私有索引库

    远程索引库创建是以常用的【码云】为例的,如下图所示。

    1.png

    2. 将私有索引库添加到本地

    2.1 通过pod repo命令行,查看pod源地址

    2.png

    如上图,目前我的本地只有一个github上的公有索引库。

    2.2 通过插播的pod命令,添加远程索引库到本地

    执行以下命令:
    pod repo add KPSpecs https://gitee.com/katypei/KPSpecs.git

    2.3 验证索引库是否添加到本地成功

    重新执行pod repo即可。

    3.png

    如上图所示,及添加成功。

    3.创建本地私有库(此处以KPExtension为例)

    3.1 在【码云】创建组件库,库名为KPExtension

    3.2 通过pod命令,在本地创建一个基于pod模板的git仓库,仓库名如3.1

    pod lib create KPExtension

    使用以上命令,需要进行一些信息的配置

    5.png

    以上配置针对个人需要进行配置,此处因为我本人是希望创建一个swift的远程私有库,所以此处语言我选择了Swift。配置完成之后,会自动打开一个响应的Example项目。该项目如下:

    7.png

    将需要放到该私有库的文件替换Classes文件夹中的Replace.swift。如下所示:

    8.png

    3.将上述文件拖动到对应位置(也就是之前ReplaceMe.swift之前所在的文件夹下),如下图所示:

    9.png

    4. 执行pod install命令,在Example中进行测试,确保组件可用。

    4.修改Spec文件

    10.png

    以下是Spec文件简单介绍

      s.name         = "KPExtension(仓库名称)"
      s.version      = "0.0.1(版本号,这里跟下面s.source中的tag有关)"
      s.summary      = "对你自己仓库的简单描述,不要写太多字"
      s.description  = "这个是详细描述,需要比s.summary的要长,不然会出现警告"
      s.homepage     = "仓库首页地址,如https://github.com/KityPei/KPExtension"
      s.license      = "MIT"
      s.author       = { 'KityPei' => 'kity_pei@163.com' }
      # source存放的地址是代码的真正地址
      s.source       = { :git => "仓库对应的git地址,如https://gitee.com/katypei/KPExtension.git", :tag => "#{s.version}" }
      # pod install时真正下载下来的文件路径,这里指定的是你仓库下的Classes目录中的所有.h和.m文件(填写的是相对地址)
      # ** 通配目录
    
      s.source_files  = 'KPExtension/Classes/**/*'
    
      # s.resource_bundles = {
      #   'KPExtension' => ['KPExtension/Assets/*.png']
      # }
    
      # s.public_header_files = 'Pod/Classes/**/*.h'
      # s.frameworks = 'UIKit', 'MapKit'
      # s.library = "sqlite3" # 框架依赖系统的sqlite3
    

    主要需要修改的地方:

    s.name         = "KPExtension"
    s.version      = '0.0.1'
    s.summary      = '常用到的分类'
    s.homepage     = 'https://gitee.com/katypei'
    s.source       = { :git => 'https://gitee.com/katypei/KPExtension.git', :tag => s.version.to_s }
    

    非常重要的事情
    s.source要修改成对应的git地址
    s.source要修改成对应的git地址
    s.source要修改成对应的git地址

    5. 提交私有库代码并增加tag

    5.1 将代码提交到组件仓库,常用的git命令,git工具就不说了

    git add .  // 工作时的所有变化提交到暂存区
    git commit -m '注释'   // 提交到版本库
    git remote add origin https://gitee.com/katypei/KPExtension.git
    git push -u origin master
    

    5.2 打上tag

    git tag '0.0.1'
    git push --tags
    

    6. 提交spec至私有索引库

    6.1 本地验证Spec的必填字段

    pod lib lint

    验证通过如下图:

    本地验证通过.png

    6.2 远程验证Spec

    pod spec lint

    验证通过如下图:

    远端验证通过.png

    6.3 提交podspec

    执行以下命令,将我们的代码直接push到本地索引库KPSpecs,推送后会自动帮我们同步到远程索引库

    pod repo push KPSpecs KPExtension.podspec 
    

    成功可以如下图所示:

    添加到私有索引库成功.png

    成功也可以如下图所示:

    使用Finder查找,路径应该如下:

    ~/.cocoapods/repos/
    
    文件显示.png

    7. 测试

    测试就不多说了,注意事项就是要指定pod源,否则可能找不到创建的私有远程。

    即在podfile文件中添加:

    source 'https://github.com/CocoaPods/Specs.git'  # github的公有索引库
    source 'https://gitee.com/katypei/KPSpecs.git' # 自己的私有索引库
    
    

    踩坑之旅

    问题一:

    在进行本地验证的时候,出现以下错误:

    11.png

    出现这种情况的原因:

    因为制作的是Swift的私有库,没有指定Swift语言的版本,验证器默认使用的是Swift 3.2,可能会出现问题,希望指定Swift语言的版本。

    解决方案:

    1. 使用pod lib lint --alow-warnings命令忽略验证过程中的警告(使用的该命令应该注意你包装过的库尽量是没问题的);
    2. 修改.podspec文件,新增一行s.swift_version = '4.0',指定Swift语言的版本,当然马上就出Swift 5.0了;
    3. 在工程目录执行echo "4.0" > .swift-version,在验证配置文件的时候执行pod spec lint prcject.podspec --swift-version=4.0 –verbose指定Swift的版本。

    相关文章

      网友评论

        本文标题:Swift 组件化开发之创建远程私有库

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