cocoapods 组件化(1)

2021-01-05  本文已影响0人  迷路的小小

一. 创建Podfile

1. cd 进入工程目录IOSModule

2. 打开终端执行pod init

3. 终端执行pod install

二. 创建模块

1. 新建工程

创建工程Network,加入工作空间IOSModule

2. 创建spec文件

3. 编辑Network.podspec文件

打开项目,创建名为ClassesGroup。打开Network.podspec修改spec.source_filesspec.source_files = 'Classes/**/*.swift'.

符号:* 
*匹配所有文件
c* 匹配所有c开头的文件
*c 匹配所有c结尾的文件
*c* 匹配所有包含c的文件
符号:** 
递归路径
符号:? 
匹配任意一个字符
符号:[set] 
匹配任意set中的一个字符,和正则规则类似,例如否集[^a-z]
符号:{p,q} 
包含p和q的集合
符号:\ 
跳出下一个元字符

打开Network.podspec修改spec.summary作为模块描述

spec.dependency 'Moya'
spec.dependency 'RestKit/CoreData', '~> 0.20.0'
spec.ios.dependency 'MBProgressHUD', '~> 0.5'
spec.dependency '自己的主spec/subspec'
spec.ios.framework = 'CFNetwork'
spec.frameworks = 'QuartzCore', 'CoreData'
spec.weak_framework = 'Twitter'
spec.weak_frameworks = 'Twitter', 'SafariServices'
 spec.ios.library = ‘xml2'
 spec.libraries = 'xml2', 'z'

一个library可以指定对另一个library的依赖性,另一个library的subspec或自身的subspec。
a. subspec含有不同的source文件

subspec 'Twitter' do |sp|
  sp.source_files = 'Classes/Twitter'
end

subspec 'Pinboard' do |sp|
  sp.source_files = 'Classes/Pinboard'
end

b. 子模块对其子模块的依赖

Pod::Spec.new do |s|
  s.name = 'RestKit'

  s.subspec 'Core' do |cs|
    cs.dependency 'RestKit/ObjectMapping'
    cs.dependency 'RestKit/Network'
    cs.dependency 'RestKit/CoreData'
  end

  s.subspec 'ObjectMapping' do |os|
  end
end

c. 嵌套subspec

Pod::Spec.new do |s|
  s.name = 'Root'

  s.subspec 'Level_1' do |sp|
    sp.subspec 'Level_2' do |ssp|
    end
  end
end
spec.resource = '*.xcassets'

使用方法,在模块中创建类Image类

class Image {
    
    static func get(named name: String) -> UIImage? {
        let bundle = Bundle(for: Image.self)
        return UIImage(named: name, in: bundle, compatibleWith: nil)
    }
}

cocoapods组件化(2)

上一篇下一篇

猜你喜欢

热点阅读