1. 程式人生 > >CocoaPod程式碼庫建立,配置Spec踩過的坑

CocoaPod程式碼庫建立,配置Spec踩過的坑

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'

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、還有一個坑 傳送門