官方说明文档:https://guides.cocoapods.org/syntax/podspec.html
1、代码中包含静态库
s.vendored_libraries = '/Pod/Classes/*.a'
官方文档:
https://guides.cocoapods.org/syntax/podspec.html#vendored_libraries
2、ARC工程中部分文件为 MRC
需要创建一个 subspec ,将 mrc 的文件 添加到 subspec 中,注意如果需要的话在主spec 中设置 exclude_files 来排除一下 ,不要让 两个 spec 都包含 mrc 的文件。
non_arc_files = 'Pod/Classes/lib/OpenUDID/*','Pod/Classes/lib/Regex/*','Pod/Classes/lib/ZipArchive/*'
s.exclude_files = non_arc_files
s.subspec 'no-arc' do |sna|
sna.requires_arc = false
sna.source_files = non_arc_files
end
3、lib 和 frameworks
s.frameworks = 'UIKit', 'MapKit','libicucore.A'
s.ios.library = 'icucore'
https://guides.cocoapods.org/syntax/podspec.html#frameworks
https://guides.cocoapods.org/syntax/podspec.html#libraries
4、pod库之间的 依赖
s.dependency 'FMDB', '~> 2.5'
s.dependency 'OpenUDID', '~> 1.0.0'
s.dependency 'ZipArchive', '~> 1.01h'
https://guides.cocoapods.org/syntax/podspec.html#dependency
5、 源代码库,不仅仅可以 指定 tag, branch 也可以 如下:
s.source = { :git => "http://gitlab.xsl.com:10080/iosteam/XSLUser.git", :branch => 'master' }
注意:
如果branch 上的代码有了变动 ,使用方直接 pod install 或者 pod update 是不行的。
因为pod 对 branch 或者 tag 的代码在本地有缓存,需要clean缓存之后再 pod install 或 pod update
pod cache clean PodName
同时需要删除 pod 目录下的 文件
if [ -d /Pods/XSLUser ];then
rm -fr /Pods/XSLUser
fi
最后才执行
pod update --no-repo-update
6、私有repo内的 pod 库之间的相互依赖 lint 无法通过的问题 --sources=私有repo,master,....
s.dependency 'FMDB', '~> 2.5' 这个 FMDB 可以是 repo master 上的库,也可以是 私有 repo 上的库。
如果是私有 repo 上的库 ,lint 时需要 指明。
$pod spec lint QZCrashLogManager.podspec --allow-warnings --sources=xsl-mobile-cocoaspecs,master
lint 通过之后 push 的时候依然需要 --sources
$pod repo push zhiguang-repo QZCrashLogManager.podspec --allow-warnings --sources=xsl-mobile-cocoaspecs,master
注: xsl-mobile-cocoaspecs 是我自己创建的 私有 repo,关于如何创建私有repo 也很简单 传送门
7、还有一个坑 传送门