美文网首页iOS 深度好文
iOS podspec 常用语法和子目录

iOS podspec 常用语法和子目录

作者: 水中的蓝天 | 来源:发表于2020-06-24 09:46 被阅读0次

    本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢。

    podspec文件基本操作

      Pod::Spec.new do |s|
      # 名称
      s.name             = 'XXEncryptKit' 
      #版本号
      s.version          = '0.1.0'     
      #简短介绍
      s.summary          = '简介'   
      #详细介绍
      s.description      = <<-DESC
                           XXEncryptKit description
                           DESC
      #主页,这里要填写可以访问到的地址,不然验证不通过
      s.homepage         = 'https://www.baidu.com'   
      #截图
      # s.screenshots     = "www.example.com/screenshots_1", "www.example.com/screenshots_2" 
      #开源协议
      s.license          = 'MIT' 
      #作者信息
      s.author           = { 'dingyuping' => 'dingyuping@51nbapi.com' }  
      #项目地址,不支持ssh的地址,验证不通过,只支持HTTP和HTTPS,最好使用HTTPS,这里用的码云(免费的)
      s.source           = { :git => 'https://gitee.com/xingxingstyle/MZFTestModule.git',  :tag => s.version.to_s  }   
      #多媒体介绍地址
      # s.social_media_url = 'https://twitter.com/<twitter_username>'                       
      #支持的平台及版本
      s.ios.deployment_target     = '8.0'     
      #是否使用ARC,如果指定具体文件,则具体的文件使用ARC
      #s.requires_arc = true                   
      #代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
      s.source_files = 'XXEncryptKit/Classes/**/*'     
      #资源文件地址
      s.resource_bundles = {
          'XXEncryptKit' => ['XXEncryptKit/Assets/*.png']
       } 
      #公开头文件地
      #s.public_header_files = 'XXEncryptKit/Classes/**/*.h'  
    
      #  buildsetting相关设置, 这里讲bitcode设置为NO, C++ Standard Library设置为libstdc++
      #s.xcconfig = {
      #  'ENABLE_BITCODE' => 'NO',
      #  'CLANG_CXX_LIBRARY' => 'libstdc++'
      #  }
    
      #该pod依赖的系统framework,多个用逗号隔开
      #s.frameworks = 'UIKit','CoreGraphics'
    
      #该pod依赖的系统library,多个用逗号隔开
      #s.libraries  = 'iconv','sqlite3','stdc++','z'
    
      #第三方.a文件
      #s.vendored_libraries = 'XXEncryptKit/Classes/ThirdParty/*.a'
    
      #第三方frameworks文件
      #s.vendored_frameworks = 'XXEncryptKit/Classes/ThirdParty/*.framework'
    
      #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
      #s.dependency 'AFNetworking', '~> 2.3'   
      end
    
    

    podspec验证相关参数的作用:

    Options:

    --allow-warnings : 忽略警告,即可以允许有警告也可以通过验证
    --use-libraries: 使用静态库安装规范,当包含依赖的第三方或自定义的静态库需要添加此规范
    --use-modular-headers: 如果是OC和swift 的混编需要加上
    --sources=https://cdn.cocoapods.org/: 指定索引库的源,多个源必须用逗号分隔
    --local-only: 不执行将回购推到其远程服务器的步骤
    --no-private: 包括仅适用于公共回购的检查
    --skip-import-validation: 跳过验证pod是否可以导入
    --skip-tests: 在验证期间跳过构建和运行测试
    --commit-message="Fix bug in pod": 添加自定义提交消息。如果没有指定提交消息,则打开默认编辑器
    --use-json: 在将其推送到repo之前,将podspec转换为JSON
    --swift-version=VERSION: 在标记规范时应该使用的SWIFT_VERSION。这优先于规范中指定的Swift版本或. Swift版本文件
    --no-overwrite: 不允许将覆盖现有规范的推送

    Inherited options:

    --silent : 显示所有信息
    --verbose : 显示更多调试信息
    --no-ansi : 显示没有ANSI代码的输出
    --help : 显示指定命令的帮助横幅

    podspec目录分层

    使用subspec来实现目录分层。
    目录分层的好处:

    目录分层,结构清晰;
    使用pod引入一个三方库时,可以只引入一个subspec而不用将整个三方库引入。

    例如AFNetworking:

    AFNetworking目录结构.png
    • 下面举例说明,如图所示的目录结构:
    目录结构.png
    ├── XYHStoreKit
    │   
    │   └── Classes
    │          └── XYHStoreKit.h
    │          └── XYHFMDB
    │              ├──XYHFMDB.h
    │              └── FMDB
    │                   ├──  FMDatabase.h
    │                   ├── FMDatabase.m
    │              └── XYH
    │                   ├──  XYHDB.h
    │                   ├──  XYHDB.h
    │         └── XYHKeyChainStore
    │                   ├──  XYHKeyChainStore.h
    │                   ├──  XYHKeyChainStore.m
    │         └── XYHKeyedArchiverStore
    │                   ├──  XYHKeyedArchiverStore.h
    │                   ├──  XYHKeyedArchiverStore.m
    ├── README.md
    

    写法如下:

    #头文件~XYHStoreKit.h 在最外层
     s.source_files = 'XYHStoreKit/Classes/XYHStoreKit.h'
     s.public_header_files = 'XYHStoreKit/Classes/XYHStoreKit.h'
      
    #XYHFMDB
    s.subspec 'XYHFMDB' do |ss|
    
      #XYHFMDB.h头文件
        ss.source_files = 'XYHStoreKit/Classes/XYHFMDB/XYHFMDB.h'
     #公开头文件
        ss.public_header_files = 'XYHStoreKit/Classes/XYHFMDB/XYHFMDB.h'
        
        ss.subspec 'FMDB' do |sss|
           sss.source_files = 'XYHStoreKit/Classes/XYHFMDB/FMDB/**/*'
           sss.public_header_files = 'XYHStoreKit/Classes/XYHFMDB/FMDB/*.h'
            #配置依赖的系统库
           sss.libraries = 'sqlite3'
        end
        
        ss.subspec 'XYH' do |sss|
           sss.source_files = 'XYHStoreKit/Classes/XYHStoreKit/XYH/**/*'
           #配置依赖的系统框架
           sss.frameworks = 'UIKit','CoreData'
           #XYH中依赖了XYH之外的模块FMDB
           sss.dependency 'XYHStoreKit/XYHFMDB/FMDB'
        end
        
      end
    
    #XYHKeyChainStore
    s.subspec 'XYHKeyChainStore' do |ss|
          #引入XYHKeyChainStore中所有资源文件
           ss.source_files = 'XYHStoreKit/Classes/XYHKeyChainStore/**/*'
         #公开XYHKeyChainStore模块中的头文件
           ss.public_header_files = 'XYHStoreKit/Classes/XYHKeyChainStore/*.h'
      end
    
    #XYHKeyedArchiverStore
    
      s.subspec 'XYHKeyedArchiverStore' do |ss|
             ss.source_files = 'XYHStoreKit/Classes/XYHKeyedArchiverStore/**/*'
             ss.public_header_files = 'XYHStoreKit/Classes/XYHKeyedArchiverStore/XYHKeyedArchiverStore.h'
    
             #依赖的三方库,pod库或者可以是自身的subspec
             ss.dependency 'XYHStoreKit/XYHFMDB'
             ss.dependency 'XYHStoreKit/XYHKeyChainStore'
      end
     
    

    效果:

    效果图.png

    相关文章

      网友评论

        本文标题:iOS podspec 常用语法和子目录

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