Cocopods組件化之podspec文件解析

寫這篇文章的目的匙头,是在項(xiàng)目組件化中赘风,pod文件目錄下的文件夾多級(A>>B>>C)分組遇到的一些問題和解決思路

podSpec的一些屬性

Pod::Spec.new do |s|
  # 項(xiàng)目名
  s.name             = 'SYBaseKit'
  # 版本號
  s.version          = '0.1.9'
  # 簡單描述
  s.summary          = 'SYBaseKit.'
  # 詳細(xì)描述
  s.description      = <<-DESC
SYBaseKit框架
                       DESC
# 項(xiàng)目的主頁
  s.homepage         = 'http://git.oschina.net/qq2350199075/SYBaseKit'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  # 項(xiàng)目遵守的協(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>'
# 項(xiàng)目的最低版本支持
  s.ios.deployment_target = '8.0'
# 表示源文件的路徑吼驶,這個(gè)路徑是相對podspec文件而言的。(這屬性下面單獨(dú)討論)
  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完成到本地項(xiàng)目中 只能顯示兩級文件夾
就拿AFNetWorking舉例吧 上圖

Snip20170717_5.png

我查詢了其他關(guān)于組件化的文章,對于pod后的文件夾只顯示兩級關(guān)系,什么意思造成,就是AFNetwork>>UIKIt,值顯示到這里,而我想要的是AFNetWork>>UIKit>>UIButton,或者AFNetWork>UIKit>UILab這些細(xì)分的文件夾
在這期間也查閱了YYkit框架 也是只有兩級

Snip20170717_6.png

不懂這些框架為什么不分的詳細(xì)一些雄嚣,也有可能都是在一個(gè)分類下吧
我想要的是這種樣式 來來 上圖

Snip20170717_9.png

OK 結(jié)果都展示完了 下面講一下思路
關(guān)于文件顯示 都在podSpec文件里的一個(gè)屬性控制
source_files是需要編譯文件的文件目錄晒屎,注意是文件目錄而不是工程目錄
subspec相當(dāng)于把項(xiàng)目劃分成幾個(gè)子模塊,需要那部分功能缓升,就引入對應(yīng)的組件鼓鲁,比如AFNetworking的podspec 在終端上搜索AFNetWorking 你會發(fā)現(xiàn)分成幾個(gè)小模塊,比如你需要檢測網(wǎng)絡(luò)時(shí)港谊,就只需要引用AFNetworking/Reachability即可

Snip20170717_10.png

我自己的私有庫是這樣的 多了一級文件(A>>B>>C)

Snip20170717_11.png

下面是關(guān)于subspec的一些寫法



Pod::Spec.new do |s|
  # 項(xiàng)目名
  s.name             = 'SYBaseKit'
  # 版本號
  s.version          = '0.1.9'
  # 簡單描述
  s.summary          = 'SYBaseKit.'
  # 詳細(xì)描述
  s.description      = <<-DESC
SYBaseKit框架
                       DESC
# 項(xiàng)目的主頁
  s.homepage         = 'http://git.oschina.net/qq2350199075/SYBaseKit'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  # 項(xiàng)目遵守的協(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>'
# 項(xiàng)目的最低版本支持
  s.ios.deployment_target = '8.0'
# 表示源文件的路徑骇吭,這個(gè)路徑是相對podspec文件而言的。(這屬性下面單獨(dú)討論)
  # 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時(shí) 一定要指定對應(yīng)的source_files
如果source_files定義錯(cuò)誤就會報(bào)錯(cuò)誤

 file patterns: The `source_files` pattern did not match any file.

這個(gè)是在指定共享的類庫時(shí), 文件路徑不對, 也就是設(shè)置 s.source_files 字段時(shí), 發(fā)生了錯(cuò)誤, 這里的路徑是相對于SYBaseKit.podspec文件的, 如果是與SYBaseKit.podspec同級的文件夾, 直接寫文件夾名稱即可

Snip20170717_13.png

在定義subspec

 s.subspec 'Tool' do |t|
    t.source_files = 'SYBaseKit/Classes/Tool/**/*'
 end

如果Tool文件下還有一個(gè)子目錄封锉,比如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)階

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末成福,一起剝皮案震驚了整個(gè)濱河市碾局,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奴艾,老刑警劉巖净当,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡像啼,警方通過查閱死者的電腦和手機(jī)俘闯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忽冻,“玉大人真朗,你說我怎么就攤上這事∩希” “怎么了遮婶?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長湖笨。 經(jīng)常有香客問我旗扑,道長,這世上最難降的妖魔是什么慈省? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任臀防,我火速辦了婚禮,結(jié)果婚禮上边败,老公的妹妹穿的比我還像新娘袱衷。我一直安慰自己,他們只是感情好放闺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布祟昭。 她就那樣靜靜地躺著,像睡著了一般怖侦。 火紅的嫁衣襯著肌膚如雪篡悟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天匾寝,我揣著相機(jī)與錄音搬葬,去河邊找鬼。 笑死艳悔,一個(gè)胖子當(dāng)著我的面吹牛急凰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播猜年,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼抡锈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了乔外?” 一聲冷哼從身側(cè)響起床三,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杨幼,沒想到半個(gè)月后撇簿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體聂渊,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年四瘫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汉嗽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡找蜜,死狀恐怖饼暑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锹杈,我是刑警寧澤撵孤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站竭望,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏裕菠。R本人自食惡果不足惜咬清,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奴潘。 院中可真熱鬧旧烧,春花似錦、人聲如沸画髓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奈虾。三九已至夺谁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肉微,已是汗流浹背匾鸥。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碉纳,地道東北人勿负。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像劳曹,于是被迫代替她去往敵國和親奴愉。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 文章目錄 簡書的目錄跳轉(zhuǎn)還在研究中... 什么是CocoaPods铁孵?CocoaPods的核心組件 podspec文...
    Mccc_閱讀 3,865評論 5 21
  • Cocoapods是非常好用的一個(gè)iOS依賴管理工具锭硼,使用它可以方便的管理和更新項(xiàng)目中所使用到的第三方庫,以及將自...
    Nash33閱讀 2,084評論 0 50
  • 前言 本篇主要講解組件化架構(gòu)思想库菲,從零教你如何組件化一個(gè)項(xiàng)目账忘。 如果喜歡我的文章,可以關(guān)注我微博:袁崢Seemyg...
    袁崢閱讀 21,178評論 41 339
  • iOS的組件化,一直都是一個(gè)理念鳖擒,很多大公司一直在強(qiáng)調(diào)卻沒有具體可行的或簡單可行的方案溉浙。所以分享下大概思路。 框架...
    蝴蝶之夢天使閱讀 5,328評論 14 34
  • 年前調(diào)研了關(guān)于組件化的一些實(shí)施方案蒋荚,最終確定將項(xiàng)目進(jìn)行分層和業(yè)務(wù)拆分成獨(dú)立工程戳稽,為了便于管理,業(yè)務(wù)組件和業(yè)務(wù)庫采用...
    花椒不麻牙閱讀 492評論 0 0