美文网首页
cocoapods 组件化(1)

cocoapods 组件化(1)

作者: 迷路的小小 | 来源:发表于2021-01-05 10:17 被阅读0次

    一. 创建Podfile

    1. cd 进入工程目录IOSModule

    2. 打开终端执行pod init

    3. 终端执行pod install

    二. 创建模块

    1. 新建工程

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

    2. 创建spec文件

    • cd进入Network目录,终端执行命令pod spec create Network
    • 完成时显示Specification created at Network.podspec

    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'
    
    • frameworks
    spec.ios.framework = 'CFNetwork'
    spec.frameworks = 'QuartzCore', 'CoreData'
    
    • weak_frameworks
    spec.weak_framework = 'Twitter'
    spec.weak_frameworks = 'Twitter', 'SafariServices'
    
    • libraries使用的静态库
     spec.ios.library = ‘xml2'
     spec.libraries = 'xml2', 'z'
    
    • Subspecs

    一个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)

    相关文章

      网友评论

          本文标题:cocoapods 组件化(1)

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