CocoaPod代码库创建,配置Spec踩过的坑

官方说明文档: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、还有一个坑 传送门





你可能感兴趣的:(iOS)