美文网首页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 常用语法和子目录

    本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗...

  • iOS开发之Framework上传到Cocoapods看我应该够

    文章预读 Podspec Syntax Reference(Podspec语法)使用 COCOAPODS 管理自定...

  • Podspec语法

    前言 ​ 长时间不写Podspec文件,容易忘记里面的一些属性含义,所以本文把 官方Podspec语法v1.9...

  • Pod小知识点

    验证 1、验证.podspec会先测试本地.podspec文件是否存在语法错误。测试成功再根据.podspec文件...

  • 验证podspec文件踩过的坑

    1、验证.podspec会先测试本地.podspec文件是否存在语法错误。测试成功再根据.podspec文件找到远...

  • xcopy命令

    Xcopy 复制文件和目录,包括子目录。 语法 xcopy Source [Destination] [/w] [...

  • GCD (Grand Central Dispatch)学习详解

    iOS开发多线程处理常用GCD,相比NSThread和NSOperation更简单 便捷 易懂。Swift语法中对...

  • iOS podspec文件介绍

    podspec文件的常用配置字段介绍

  • ios .podspec

    最近在功能迭代过程中需要用到修改pod依赖,针对.podspec的用法找了一些资料,记录下方便以后用到的时候翻阅。...

  • Flutter xcode运行ios问题

    一、xcode 报:engine/ios/Flutter.podspec: No such file or dir...

网友评论

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

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