一. 创建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文件
-
创建模块目录。
打开项目,创建名为Classes
的Group
。打开Network.podspec
修改spec.source_files
为spec.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)
}
}
网友评论