寫這篇文章的目的,是在項目組件化中,pod文件目錄下的文件夾多級(A>>B>>C)分組遇到的一些問題和解決思路
podSpec的一些屬性
Pod::Spec.new do |s|
# 項目名
s.name = 'SYBaseKit'
# 版本號
s.version = '0.1.9'
# 簡單描述
s.summary = 'SYBaseKit.'
# 詳細(xì)描述
s.description = <<-DESC
SYBaseKit框架
DESC
# 項目的主頁
s.homepage = 'http://git.oschina.net/qq2350199075/SYBaseKit'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
# 項目遵守的協(xié)議
s.license = { :type => 'MIT', :file => 'LICENSE' }
# 作者的郵箱
s.author = { 'jixiedaheng@163.com' => '2350199075@qq.com' }
# git倉庫的https地址
s.source = { :git => 'https://git.oschina.net/qq2350199075/SYBaseKit.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
# 項目的最低版本支持
s.ios.deployment_target = '8.0'
# 表示源文件的路徑,這個路徑是相對podspec文件而言的。(這屬性下面單獨討論)
s.source_files = 'SYBaseKit/Classes/**/*'
#c.source_files = 'SYBaseKit/Classes/**/*'
# s.resource_bundles = {
# 'SYBaseKit' => ['SYBaseKit/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'AFNetworking', '~> 3.1.0'
end
感興趣的同學(xué)可以去cocopods關(guān)于podspec的介紹 看下介紹
我在組件中遇到的問題是 pod完成到本地項目中 只能顯示兩級文件夾
就拿AFNetWorking舉例吧 上圖
我查詢了其他關(guān)于組件化的文章,對于pod后的文件夾只顯示兩級關(guān)系,什么意思,就是AFNetwork>>UIKIt,值顯示到這里,而我想要的是AFNetWork>>UIKit>>UIButton,或者AFNetWork>UIKit>UILab這些細(xì)分的文件夾
在這期間也查閱了YYkit框架 也是只有兩級
不懂這些框架為什么不分的詳細(xì)一些,也有可能都是在一個分類下吧
我想要的是這種樣式 來來 上圖
OK 結(jié)果都展示完了 下面講一下思路
關(guān)于文件顯示 都在podSpec文件里的一個屬性控制
source_files是需要編譯文件的文件目錄,注意是文件目錄而不是工程目錄
subspec相當(dāng)于把項目劃分成幾個子模塊,需要那部分功能,就引入對應(yīng)的組件,比如AFNetworking的podspec 在終端上搜索AFNetWorking 你會發(fā)現(xiàn)分成幾個小模塊,比如你需要檢測網(wǎng)絡(luò)時,就只需要引用AFNetworking/Reachability即可
我自己的私有庫是這樣的 多了一級文件(A>>B>>C)
下面是關(guān)于subspec的一些寫法
Pod::Spec.new do |s|
# 項目名
s.name = 'SYBaseKit'
# 版本號
s.version = '0.1.9'
# 簡單描述
s.summary = 'SYBaseKit.'
# 詳細(xì)描述
s.description = <<-DESC
SYBaseKit框架
DESC
# 項目的主頁
s.homepage = 'http://git.oschina.net/qq2350199075/SYBaseKit'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
# 項目遵守的協(xié)議
s.license = { :type => 'MIT', :file => 'LICENSE' }
# 作者的郵箱
s.author = { 'jixiedaheng@163.com' => '2350199075@qq.com' }
# git倉庫的https地址
s.source = { :git => 'https://git.oschina.net/qq2350199075/SYBaseKit.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
# 項目的最低版本支持
s.ios.deployment_target = '8.0'
# 表示源文件的路徑,這個路徑是相對podspec文件而言的。(這屬性下面單獨討論)
# s.source_files = 'SYBaseKit/Classes/**/*'
#第三層文件夾
c.subspec 'NSDictionary' do |nsd|
nsd.source_files = 'SYBaseKit/Classes/Category/NSDictionary/**/*'
end
c.subspec 'NSObject' do |nso|
nso.source_files = 'SYBaseKit/Classes/Category/NSObject/**/*'
end
c.subspec 'NSString' do |nss|
nss.source_files = 'SYBaseKit/Classes/Category/NSString/**/*'
end
c.subspec 'UIView' do |uiv|
uiv.source_files = 'SYBaseKit/Classes/Category/UIView/**/*'
end
end
s.subspec 'Tool' do |t|
# t.source_files = 'SYBaseKit/Classes/Tool/**/*'
t.subspec 'Define' do |defi|
defi.source_files = 'SYBaseKit/SYBaseKit/Classes/Tool/Define/**/*'
end
t.subspec 'NetWork' do |net|
net.source_files = 'SYBaseKit/SYBaseKit/Classes/Tool/NetWork/**/*'
end
end
#c.source_files = 'SYBaseKit/Classes/**/*'
# s.resource_bundles = {
# 'SYBaseKit' => ['SYBaseKit/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'AFNetworking', '~> 3.1.0'
end
下面是重要的
下面是重要的
下面是重要的
在描述subspec時 一定要指定對應(yīng)的source_files
如果source_files定義錯誤就會報錯誤
file patterns: The `source_files` pattern did not match any file.
這個是在指定共享的類庫時, 文件路徑不對, 也就是設(shè)置 s.source_files 字段時, 發(fā)生了錯誤, 這里的路徑是相對于SYBaseKit.podspec文件的, 如果是與SYBaseKit.podspec同級的文件夾, 直接寫文件夾名稱即可
在定義subspec
s.subspec 'Tool' do |t|
t.source_files = 'SYBaseKit/Classes/Tool/**/*'
end
如果Tool文件下還有一個子目錄,比如Tool>>NetWork
那么需要這樣定義
s.subspec 'Tool' do |t|
# t.source_files = 'SYBaseKit/Classes/Tool/**/*'
#子文件夾的寫法(一定要把父文件夾的source_files給注釋掉)
t.subspec 'Define' do |defi|
defi.source_files = 'SYBaseKit/SYBaseKit/Classes/Tool/Define/**/*'
end
end
一定要把父文件的source_files注釋掉
一定要把父文件的source_files注釋掉
一定要把父文件的source_files注釋掉
否則是沒有效果的,本人親測。
參考文獻(xiàn)如下
Cocopods Guide
使用Cocoapods創(chuàng)建私有podspec
談?wù)凜ocoaPods組件二進(jìn)制化方案
cocopods進(jìn)階