05-组件化(远程私有库)

一、组件化概念介绍

  • 将一个单一工程的项目,分解成为各个独立的组件;然后按照某种方式,任意组织成一个拥有完整业务逻辑的工程

二、如何划分成为一个组件

  • 简单可以划分为:业务组件、功能组件、基础组件
    05-组件化(远程私有库)_第1张图片
    组件化1.png

二、远程私有库简绍

  • 远程私有库中的“远程”表示,我们开发的代码存储到远程代码仓库中,而不是本地;“私有”表示,访问这个库是需要权限的,只有通过库的作者授权了以后,他人才可以访问使用。
  • 下面通过一幅图来对比一下 远程私有库 和 开源库
    05-组件化(远程私有库)_第2张图片
    组件化.png

三、创建私有库

1、首先要找一个远程代码托管平台(码云、码市、GitHub<收费>),这些都可以。

  • 1、创建一个远程私有索引库,后续中我们所有组件的spec文件都会上传到这个远程私有索引库中


    05-组件化(远程私有库)_第3张图片
    组件化2.png

2、基础组件

  • 1、创建存放基础组件源码的远程库
  • 1、使用终端来快速创建一个私有库模板库
RemoteLibrary $ pod lib create RevanBaseModule
  • 2、在回答下面的问题
What language do you want to use?? [ Swift / ObjC ]
 > ObjC

Would you like to include a demo application with your library? [ Yes / No ]
 > Yes

Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > None

Would you like to do view based testing? [ Yes / No ]
 > No

What is your class prefix?
 > Revan
  • 3、把需要组件化的代码拖到模板中的Classes文件夹下
    05-组件化(远程私有库)_第4张图片
    组件化3.png
  • 4、执行以下命令把代码加入项目工程中
pod install
05-组件化(远程私有库)_第5张图片
组件化4.png

05-组件化(远程私有库)_第6张图片
组件化5.png

3、编辑spec并且上传到远程索引库

  • 1、编辑spec
    05-组件化(远程私有库)_第7张图片
    组件6.png
  • 2、递交代码到远程仓库中
    05-组件化(远程私有库)_第8张图片
    组件化7.png
  • 3、打tag并且上传远程
    05-组件化(远程私有库)_第9张图片
    组件化8.png
  • 4、可以对spec文件做一下验证,只有通过了验证spec文件才能上传成功
    • spec本地验证
      05-组件化(远程私有库)_第10张图片
      组件化9.png
    • spec远程验证
      05-组件化(远程私有库)_第11张图片
      组件化10.png
  • 5、上传spec文件到本地
    05-组件化(远程私有库)_第12张图片
    组件化11.png
    • 本地索引库
      05-组件化(远程私有库)_第13张图片
      组件化12.png
    • 远程索引库
      05-组件化(远程私有库)_第14张图片
      组件化13.png
  • 5、小结
    • 只要执行一次上传spec文件的操作,本地索引库和远程索引库都会上传上去
pod repo push RevanSpecs RevanBaseModule.podspec

三、迭代基础组件

  • 1、把需要组件化的代码拖入Classes文件夹下
  • 2、修改podspec文件中的版本号
  • 3、提交代码到远程仓库
  • 4、打tag:1、与version版本号相同,2、推送到远程
  • 5、验证podspec文件
  • 6、上传podspec文件

四、使用私有库

  • 1、使用私有库时,必须在podfile文件中引入source
    05-组件化(远程私有库)_第15张图片
    组件化14.png
  • 2、在Podfile文件中添加了source后安装成功
    05-组件化(远程私有库)_第16张图片
    组件化15.png
  • 3、为什么要同时在Podfile文件中添加Cocopods官方source 和 私有source
    • 1、通常情况下使用第三方库的时候,都是使用Cocopods官方source,但是当我们使用私有库的时候,因为我们私有库的podspce文件并没有上传到CocoPods官方索引库中,所以是在不到我们的私有库,这就是为什么第一次安装失败的原因
    • 2、当我们在Podfile文件中只添加私有库的源时,因为添加了源就指定了索引库,这样会造成只能搜索到我们的私有库而搜索不到AFNetworking等等的开源库,所以,为了都能使用,当我们在使用私有库时,必须要同时在Podfile文件中添加CocoPods官方和私有source

五、subspec

  • 1、为什么要使用subspec
    • 因为有时我们项目中只是用到了基础组件中的Category文件夹中的代码,如何使用开始的方式添加私有组件的时候,会把私有组件中的所有代码统统加入到项目中,这就造成很多不必要的代码加入了项目中,而使用subspec后就会完美的解决这个问题
  • 2、subspec书写格式
    05-组件化(远程私有库)_第17张图片
    组件化16.png
  • 3、使用了subspec后搜索出来的格式
    05-组件化(远程私有库)_第18张图片
    组件化17.png
  • 4、没有使用subspec和使用了subspec相比较


    05-组件化(远程私有库)_第19张图片
    组件化18.png
    05-组件化(远程私有库)_第20张图片
    组件化19.png
  • 5、使用私有库中多个文件夹
    05-组件化(远程私有库)_第21张图片
    组件化20.png

你可能感兴趣的:(05-组件化(远程私有库))