本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢。
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- 下面举例说明,如图所示的目录结构:
├── 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
网友评论