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

好好学习,天天向上

前言

组件化的优点

优点

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

缺点

  • 版本同步的问题

组件化划分

基础组件

基础配置(经常用到的宏,常量),分类,网络(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' => '[email protected]' }
  # 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 组件化开发之创建远程私有库)