在專案開發過程中我們不可避免的使用到第三方開發庫,這篇文章主要講解了一款類庫管理工具CocoaPods,下面就為大家分析一下CocoaPods的一種檔案格式語法Podspec。
簡介
Podspec規範的描述了一個pod庫的版本,它包括有關應從何處獲取源、要使用什麼檔案、應用的構建設定以及其他一般後設資料(如其名稱、版本和描述)的詳細資訊。
A specification describes a version of Pod library. It includes details about where the source should be fetched from, what files to use, the build settings to apply, and other general metadata such as its name, version, and description.
Podfile最基本的用法
在iOS專案下執行pod init
會生成如下檔案,相信iOS開發的童鞋對他非常熟悉了,就不在過多的介紹
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
# 新增網路庫
pod 'AFNetworking', '~> 3.2.1'
target 'Demo' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for Demo
end
複製程式碼
小技巧:如果想要搜尋某個庫,可以使用pod search
,例如:pod search AFNetworking
Podspec語法
1、如何建立Podspec檔案
pod spec create
pod spec create [
NAME
|https://github.com/USER/REPO
]
在當前工作目錄中建立一個名為PodSpec的PodSpec NAME.podspec。如果傳遞了GitHub網址,則預先填充規範。
2、根的規範,常用的
Pod的名稱,定義該庫的名稱,例如:
s.name = 'AFNetworking' 等等
3、不常用
libraries,使用者目標(應用程式)需要連結的系統庫列表,注意是需要連線的系統庫列表, 例如在庫中引入了其他庫檔案,但是其他庫檔案又需要某些系統的庫,這時我們就需要這種方式引入(這個地方在開發Flutter iOS庫檔案時坑了我整整快一天了各種第三方庫引用,然後又各種問題)
s.libraries = 'xml2', 'z', 'sqlite3', 'c++'
frameworks,使用者目標需要連結的系統框架列表,注意是需要連結的系統框架列表
s.frameworks = 'QuartzCore', 'CoreData', 'MobileCoreServices', 'CFNetwork', 'CoreGraphics'
dependency, 對其他Pod或“子規範”的依賴性。依賴關係可以指定版本要求。~>建議使用樂觀版本指示器,因為它可以很好地控制版本,而不會過於嚴格。例如, ~> 1.0.1相當於>= 1.0.1結合使用< 1.1。同樣, ~> 1.0將匹配1.0,1.0.1,1.1,但不會升級到2.0。
s.dependency 'MBProgressHUD', '~> 0.5'
vendored_frameworks, 隨Pod一起提供的框架捆綁包的路徑
s.vendored_frameworks = 'A.framework', 'B.framework'
上述3、不常用
的就是就是今天遇到的坑
更多其他功能請詳見
:guides.cocoapods.org/syntax/pods…