在项目开发过程中我们不可避免的使用到第三方开发库,这篇文章主要讲解了一款类库管理工具CocoaPods,下面就为大家分析一下CocoaPods的一种文件格式语法Podspec。
Podspec规范的描述了一个pod库的版本,它包括有关应从何处获取源、要使用什么文件、应用的构建设置以及其他一般元数据(如其名称、版本和描述)的详细信息。
A specification describes a version of Pod library. It includes details about where the source should be fetched from, what files to use, the build settings to apply, and other general metadata such as its name, version, and description.
在iOS项目下运行pod init
会生成如下文件,相信iOS开发的童鞋对他非常熟悉了,就不在过多的介绍
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
# 添加网络库
pod 'AFNetworking', '~> 3.2.1'
target 'Demo' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for Demo
end
小技巧:如果想要搜索某个库,可以使用pod search
,例如:pod search AFNetworking
pod spec create
pod spec create [
NAME
|https://github.com/USER/REPO
]
在当前工作目录中创建一个名为PodSpec的PodSpec NAME.podspec。如果传递了GitHub网址,则预先填充规范。
Pod的名称,定义该库的名称,例如:
s.name = ‘AFNetworking’
等等
libraries,用户目标(应用程序)需要链接的系统库列表,注意是需要连接的系统库列表, 例如在库中引入了其他库文件,但是其他库文件又需要某些系统的库,这时我们就需要这种方式引入(这个地方在开发Flutter iOS库文件时坑了我整整快一天了各种第三方库引用,然后又各种问题)
s.libraries = ‘xml2’, ‘z’, ‘sqlite3’, ‘c++’
frameworks,用户目标需要链接的系统框架列表,注意是需要链接的系统框架列表
s.frameworks = ‘QuartzCore’, ‘CoreData’, ‘MobileCoreServices’, ‘CFNetwork’, ‘CoreGraphics’
dependency, 对其他Pod或“子规范”的依赖性。依赖关系可以指定版本要求。~>建议使用乐观版本指示器,因为它可以很好地控制版本,而不会过于严格。例如, ~> 1.0.1相当于>= 1.0.1结合使用< 1.1。同样, ~> 1.0将匹配1.0,1.0.1,1.1,但不会升级到2.0。
s.dependency ‘MBProgressHUD’, ‘~> 0.5’
vendored_frameworks, 随Pod一起提供的框架捆绑包的路径
s.vendored_frameworks = ‘A.framework’, ‘B.framework’
上述3、不常用
的就是就是今天遇到的坑
更多其他功能请详见
:https://guides.cocoapods.org/syntax/podspec.html#specification