iOS 高级开发(6)之 组件化(一)私有化本地仓库

Demo 下载
组件化: 讲一个工程分解为各个组件,然后按照某种方式任意组织成为一个拥有完整业务逻辑的功能

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

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

业务组件
业务线一, 业务线二

pod install 做了什么事情
比如我们 pod install AFN
AFN 框架里面有 spec 文件. 这就是描述框架信息的文件
我们执行pod install 的时候. 是现在本地找 spec 文件, 如果找到了就可以通过 spec 的相关信息例如项目地址,文件等 从本地拉取代码. 如果找不到,就会在远程仓库(github) 上寻找,然后 get 数据

私有化本地仓库
我们要解决什么问题?
平时我们都喜欢利用 cocoPods 来管理第三方库. 利用 pod install 从 github 远程拉取代码. 如果我们要制作一个本地仓库应该怎么制作呢? 这是本篇主要的内容
这是我写的一个关于导航栏的一个第三方框架,非常简单易用,且功能丰富. 那么我们就以它为例子
https://github.com/liuyaozong1/LYZ_EasyNavigation

通过 cocopods 集成.png

上面的图片是通过 cocopods 集成的. 如果我们没有发布在远程仓库. 怎么操作
步骤一
在 test9 目录下面建立LYZ_EasyNavigation的文件夹
image.png

步骤二
cd 到LYZ_EasyNavigation 文件夹并执行

//创建一个pod-template 的模板
arch -x86_64 pod lib create LYZ_EasyNavigation

然后出现下面的图片


image.png

会出现一系列要求填写的内容, 根据自己的需求填写完毕就会自动创建好模板

步骤三

image.png

创建完成之后 xcode 会自动打开这个模板. 上图就是我创建好的模板. 我们可以看到有LYZ_EasyNavigation.podspec 文件 这个是用来描述框架信息的
有个ReplaceMe.swift 这个文件的意思就是让你用自己的文件来替换它. 我们可以把自己的代码去替换
image.png

但是文件替换之后, 我build 一下这个时候要报错. 因为我之前的导航栏框架依赖了 SnapKit
这里需要修改podspec

Pod::Spec.new do |s|
  s.name             = 'LYZ_EasyNavigation'
  s.version          = '0.1.0'
  s.summary          = 'A short description of LYZ_EasyNavigation.'

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/[email protected]/LYZ_EasyNavigation'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { '[email protected]' => '[email protected]' }
  s.source           = { :git => 'https://github.com/[email protected]/LYZ_EasyNavigation.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/'

  s.ios.deployment_target = '11.0' //最低支持 iOS 版本 11

  s.source_files = 'LYZ_EasyNavigation/Classes/**/*'
  s.swift_version = '5.0'  //支持 swift 5.0
  
  # s.resource_bundles = {
  #   'LYZ_EasyNavigation' => ['LYZ_EasyNavigation/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
   s.dependency 'SnapKit'  //依赖库
end

关于上面参数的修改,推荐一篇文章
https://www.jianshu.com/p/3a365f273439

然后 pod install 在 build successd!

至此我们的本地库搭建完毕!

如何使用呢?
先对 test9 pod init ,然后在 Podfile 加入本地仓库路径,指向的是.podspec 这个目录

image.png
pod 'LYZ_EasyNavigation', :path => './LYZ_EasyNavigation/LYZ_EasyNavigation'

然后 pod install


image.png

编译一下 build successd!


image.png

你可能感兴趣的:(iOS 高级开发(6)之 组件化(一)私有化本地仓库)