本文源自本人的學(xué)習(xí)記錄整理與理解葫辐,其中參考閱讀了部分優(yōu)秀的博客和書籍洛退,盡量以通俗簡(jiǎn)單的語句轉(zhuǎn)述。引用到的地方如有遺漏或未能一一列舉原文出處還望見諒與指出,另文章內(nèi)容如有不妥之處還望指教蒲祈,萬分感謝。
podspec文件基本操作
Pod::Spec.new do |s|
# 名稱
s.name = 'XXEncryptKit'
#版本號(hào)
s.version = '0.1.0'
#簡(jiǎn)短介紹
s.summary = '簡(jiǎn)介'
#詳細(xì)介紹
s.description = <<-DESC
XXEncryptKit description
DESC
#主頁(yè),這里要填寫可以訪問到的地址萝嘁,不然驗(yàn)證不通過
s.homepage = 'https://www.baidu.com'
#截圖
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
#開源協(xié)議
s.license = 'MIT'
#作者信息
s.author = { 'dingyuping' => 'dingyuping@51nbapi.com' }
#項(xiàng)目地址梆掸,不支持ssh的地址,驗(yàn)證不通過牙言,只支持HTTP和HTTPS酸钦,最好使用HTTPS,這里用的碼云(免費(fèi)的)
s.source = { :git => 'https://gitee.com/xingxingstyle/MZFTestModule.git', :tag => s.version.to_s }
#多媒體介紹地址
# s.social_media_url = 'https://twitter.com/<twitter_username>'
#支持的平臺(tái)及版本
s.ios.deployment_target = '8.0'
#是否使用ARC,如果指定具體文件咱枉,則具體的文件使用ARC
#s.requires_arc = true
#代碼源文件地址卑硫,**/*表示Classes目錄及其子目錄下所有文件,如果有多個(gè)目錄下則用逗號(hào)分開蚕断,如果需要在項(xiàng)目中分組顯示欢伏,這里也要做相應(yīng)的設(shè)置
s.source_files = 'XXEncryptKit/Classes/**/*'
#資源文件地址
s.resource_bundles = {
'XXEncryptKit' => ['XXEncryptKit/Assets/*.png']
}
#公開頭文件地
#s.public_header_files = 'XXEncryptKit/Classes/**/*.h'
# buildsetting相關(guān)設(shè)置, 這里講bitcode設(shè)置為NO, C++ Standard Library設(shè)置為libstdc++
#s.xcconfig = {
# 'ENABLE_BITCODE' => 'NO',
# 'CLANG_CXX_LIBRARY' => 'libstdc++'
# }
#該pod依賴的系統(tǒng)framework,多個(gè)用逗號(hào)隔開
#s.frameworks = 'UIKit','CoreGraphics'
#該pod依賴的系統(tǒng)library亿乳,多個(gè)用逗號(hào)隔開
#s.libraries = 'iconv','sqlite3','stdc++','z'
#第三方.a文件
#s.vendored_libraries = 'XXEncryptKit/Classes/ThirdParty/*.a'
#第三方frameworks文件
#s.vendored_frameworks = 'XXEncryptKit/Classes/ThirdParty/*.framework'
#依賴關(guān)系硝拧,該項(xiàng)目所依賴的其他庫(kù),如果有多個(gè)需要填寫多個(gè)s.dependency
#s.dependency 'AFNetworking', '~> 2.3'
end
podspec驗(yàn)證相關(guān)參數(shù)的作用:
Options:
--allow-warnings
: 忽略警告葛假,即可以允許有警告也可以通過驗(yàn)證
--use-libraries
: 使用靜態(tài)庫(kù)安裝規(guī)范障陶,當(dāng)包含依賴的第三方或自定義的靜態(tài)庫(kù)需要添加此規(guī)范
--use-modular-headers
: 如果是OC和swift 的混編
需要加上
--sources=https://cdn.cocoapods.org/
: 指定索引庫(kù)的源,多個(gè)源必須用逗號(hào)分隔
--local-only
: 不執(zhí)行將回購(gòu)?fù)频狡溥h(yuǎn)程服務(wù)器的步驟
--no-private
: 包括僅適用于公共回購(gòu)的檢查
--skip-import-validation
: 跳過驗(yàn)證pod是否可以導(dǎo)入
--skip-tests
: 在驗(yàn)證期間跳過構(gòu)建和運(yùn)行測(cè)試
--commit-message="Fix bug in pod"
: 添加自定義提交消息聊训。如果沒有指定提交消息抱究,則打開默認(rèn)編輯器
--use-json
: 在將其推送到repo之前,將podspec轉(zhuǎn)換為JSON
--swift-version=VERSION
: 在標(biāo)記規(guī)范時(shí)應(yīng)該使用的SWIFT_VERSION带斑。這優(yōu)先于規(guī)范中指定的Swift版本或. Swift版本文件
--no-overwrite
: 不允許將覆蓋現(xiàn)有規(guī)范的推送
Inherited options:
--silent
: 顯示所有信息
--verbose
: 顯示更多調(diào)試信息
--no-ansi
: 顯示沒有ANSI代碼的輸出
--help
: 顯示指定命令的幫助橫幅
podspec目錄分層
使用subspec來實(shí)現(xiàn)目錄分層鼓寺。
目錄分層的好處:
目錄分層酿雪,結(jié)構(gòu)清晰;
使用pod引入一個(gè)三方庫(kù)時(shí)侄刽,可以只引入一個(gè)subspec
而不用將整個(gè)三方庫(kù)引入指黎。
例如AFNetworking:
- 下面舉例說明,如圖所示的目錄結(jié)構(gòu):
├── XYHStoreKit
│
│ └── Classes
│ └── XYHStoreKit.h
│ └── XYHFMDB
│ ├──XYHFMDB.h
│ └── FMDB
│ ├── FMDatabase.h
│ ├── FMDatabase.m
│ └── XYH
│ ├── XYHDB.h
│ ├── XYHDB.h
│ └── XYHKeyChainStore
│ ├── XYHKeyChainStore.h
│ ├── XYHKeyChainStore.m
│ └── XYHKeyedArchiverStore
│ ├── XYHKeyedArchiverStore.h
│ ├── XYHKeyedArchiverStore.m
├── README.md
寫法如下:
#頭文件~XYHStoreKit.h 在最外層
s.source_files = 'XYHStoreKit/Classes/XYHStoreKit.h'
s.public_header_files = 'XYHStoreKit/Classes/XYHStoreKit.h'
#XYHFMDB
s.subspec 'XYHFMDB' do |ss|
#XYHFMDB.h頭文件
ss.source_files = 'XYHStoreKit/Classes/XYHFMDB/XYHFMDB.h'
#公開頭文件
ss.public_header_files = 'XYHStoreKit/Classes/XYHFMDB/XYHFMDB.h'
ss.subspec 'FMDB' do |sss|
sss.source_files = 'XYHStoreKit/Classes/XYHFMDB/FMDB/**/*'
sss.public_header_files = 'XYHStoreKit/Classes/XYHFMDB/FMDB/*.h'
#配置依賴的系統(tǒng)庫(kù)
sss.libraries = 'sqlite3'
end
ss.subspec 'XYH' do |sss|
sss.source_files = 'XYHStoreKit/Classes/XYHStoreKit/XYH/**/*'
#配置依賴的系統(tǒng)框架
sss.frameworks = 'UIKit','CoreData'
#XYH中依賴了XYH之外的模塊FMDB
sss.dependency 'XYHStoreKit/XYHFMDB/FMDB'
end
end
#XYHKeyChainStore
s.subspec 'XYHKeyChainStore' do |ss|
#引入XYHKeyChainStore中所有資源文件
ss.source_files = 'XYHStoreKit/Classes/XYHKeyChainStore/**/*'
#公開XYHKeyChainStore模塊中的頭文件
ss.public_header_files = 'XYHStoreKit/Classes/XYHKeyChainStore/*.h'
end
#XYHKeyedArchiverStore
s.subspec 'XYHKeyedArchiverStore' do |ss|
ss.source_files = 'XYHStoreKit/Classes/XYHKeyedArchiverStore/**/*'
ss.public_header_files = 'XYHStoreKit/Classes/XYHKeyedArchiverStore/XYHKeyedArchiverStore.h'
#依賴的三方庫(kù)州丹,pod庫(kù)或者可以是自身的subspec
ss.dependency 'XYHStoreKit/XYHFMDB'
ss.dependency 'XYHStoreKit/XYHKeyChainStore'
end