CocoaPod程式碼庫建立,配置Spec踩過的坑
阿新 • • 發佈:2019-01-27
1、程式碼中包含靜態庫
s.vendored_libraries = '/Pod/Classes/*.a'
官方文件:https://guides.cocoapods.org/syntax/podspec.html#vendored_libraries2、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#dependency5、 原始碼庫,不僅僅可以 指定 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 也很簡單 傳送門