iOS組件化 - subspec子庫的制作

本文章用到的demo的下載地址

關(guān)于組件化前幾篇文章請查看這里
iOS組件化(上篇)- 拆分基礎(chǔ)組件
iOS組件化(中篇)-拆分業(yè)務(wù)組件
iOS組件化(下篇)-加載XIB缠导、圖片資源

我們創(chuàng)建了一個(gè)基礎(chǔ)組件庫FFBaseKit,假如它里面包含了Category分類帕胆、Tool工具庫荆永、APIs網(wǎng)絡(luò)庫三個(gè)功能废亭,目錄結(jié)構(gòu)如下圖所示。

image.png

此時(shí)具钥,我們在項(xiàng)目里pod FFBaseKit基礎(chǔ)庫時(shí)豆村,需要把它里面包含的三個(gè)功能都pod下來。有時(shí)候骂删,我們可能僅僅只用到了其中一個(gè)功能掌动,但是又不想全部都pod下來四啰,那么此時(shí)就涉及到子庫的制作。

最初粗恢,我們的podspec索引文件是這樣的

#
# Be sure to run `pod lib lint FFBaseKit.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#

Pod::Spec.new do |s|
  s.name             = 'FFBaseKit'
  s.version          = '1'
  s.summary          = 'A short description of FFBaseKit.'

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/FFComponent/FFBaseKit'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'JiaJung' => 'jiajung@aliyun.com' }
  s.source           = { :git => 'https://github.com/FFComponent/FFBaseKit.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'

  s.source_files = 'FFBaseKit/Classes/**/*'
  
  # s.resource_bundles = {
  #   'FFBaseKit' => ['FFBaseKit/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
    s.dependency 'AFNetworking'
    s.dependency 'FMDB'
    s.dependency 'MBProgressHUD'

end

接著柑晒,我們需要修改podspec文件,因?yàn)橐O(shè)置subspec子庫眷射,所以需要注釋掉之前的 s.source_files 和原來的依賴庫, 然后設(shè)置子庫的subspec 和子庫依賴庫

# s.source_files = 'FFBaseKit/Classes/**/*'
# s.dependency 'AFNetworking'
# s.dependency 'FMDB'
# s.dependency 'MBProgressHUD'

    s.subspec 'Category' do |category|
        category.source_files = 'FFBaseKit/Classes/Category/**/*'
    end

    s.subspec 'Tools' do |tools|
        tools.source_files = 'FFBaseKit/Classes/Tools/**/*'
        tools.dependency 'MBProgressHUD'
    end

    s.subspec 'APIs' do |apis|
        apis.source_files = 'FFBaseKit/Classes/APIs/**/*'
        apis.dependency 'AFNetworking'
        apis.dependency 'FMDB'
    end

  • s.subspec后面是我們文件目錄對應(yīng)名稱
  • do后面是起的一個(gè)別名
  • 別名.source_files是文件路徑 (注意路徑別寫錯(cuò))
  • 別名. dependency后面是子庫的依賴庫

接著驗(yàn)證podspec文件通過后 pod repo push命令提交索引文件匙赞,如果不知道怎么提交請參看我之前的這篇文章

然后就可以回到FlowerField_Component項(xiàng)目
中通過下面幾種方式使用pod庫了

  • pod 'FFBaseKit' 引入pod庫中所有模塊
  • pod 'FFBaseKit/Category' 只引入Category模塊
  • pod 'FFBaseKit', :subspecs => ['Category', 'Tools']

修改FlowerField_Component項(xiàng)目的podspec文件:

source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/FFComponent/FFSpecs.git'

use_frameworks!
platform :ios, '8.0' 
target ‘FlowerField’ do 

pod 'MBProgressHUD'
pod 'AFNetworking'
pod 'Masonry'
pod 'YYWebImage'
pod 'FMDB'
pod 'ReactiveCocoa', '~> 2.5'
pod 'FFBaseKit/Category'  //剛才設(shè)置好的庫

end

pod install之后別忘了刪除FlowerField_Component項(xiàng)目項(xiàng)目里Other下的category文件妖碉,不然會(huì)報(bào)重復(fù)沖突的

pod之后發(fā)現(xiàn)我們的FFBaseKit下就只有Category一個(gè)功能模塊了

image.png

如果想pod APIs 或者 Tools模塊功能涌庭,需要注釋掉原來podspec文件下的pod,并刪除Other下對應(yīng)的文件夾即可

#pod 'MBProgressHUD'
#pod 'AFNetworking'
#pod 'FMDB'
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末欧宜,一起剝皮案震驚了整個(gè)濱河市脾猛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鱼鸠,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羹铅,死亡現(xiàn)場離奇詭異蚀狰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)职员,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門麻蹋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人焊切,你說我怎么就攤上這事扮授。” “怎么了专肪?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵刹勃,是天一觀的道長。 經(jīng)常有香客問我嚎尤,道長荔仁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任芽死,我火速辦了婚禮乏梁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘关贵。我一直安慰自己遇骑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布揖曾。 她就那樣靜靜地躺著落萎,像睡著了一般亥啦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上模暗,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天禁悠,我揣著相機(jī)與錄音,去河邊找鬼兑宇。 笑死碍侦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的隶糕。 我是一名探鬼主播瓷产,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼枚驻!你這毒婦竟也來了濒旦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤再登,失蹤者是張志新(化名)和其女友劉穎尔邓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锉矢,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梯嗽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沽损。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灯节。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖绵估,靈堂內(nèi)的尸體忽然破棺而出炎疆,到底是詐尸還是另有隱情,我是刑警寧澤国裳,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布形入,位于F島的核電站,受9級特大地震影響躏救,放射性物質(zhì)發(fā)生泄漏唯笙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一盒使、第九天 我趴在偏房一處隱蔽的房頂上張望崩掘。 院中可真熱鬧,春花似錦少办、人聲如沸苞慢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挽放。三九已至绍赛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辑畦,已是汗流浹背吗蚌。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纯出,地道東北人蚯妇。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像暂筝,于是被迫代替她去往敵國和親箩言。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

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

  • 要解除循環(huán)依賴,引入包管理技術(shù)cocoapods會(huì)讓我們更有效率鸵赖。pod不允許組件間有循環(huán)依賴务漩,若有pod ins...
    cs_mark閱讀 2,101評論 0 1
  • 最近在學(xué)習(xí)vue.js的時(shí)候發(fā)現(xiàn),vue的組件化的思想對于編寫代碼是一個(gè)非常有用的事情它褪。 首先為什么需要組件化菲饼? ...
    拂曉的云閱讀 7,172評論 6 23
  • 在一個(gè)單位工作,不要想到二十年镐确、三十年之后會(huì)是什么樣子包吝,如果這樣想,那么人生就失去了意義源葫,也就失去了努力和準(zhǔn)備诗越。 ...
    當(dāng)?shù)?/span>閱讀 412評論 0 0
  • 萬一,我病了息堂,并不是無藥可治嚷狞,拯救需要你傾家蕩產(chǎn),但我也病怏怏一生荣堰,你是否依然愿意陪我明滅這段時(shí)光…… 頭發(fā)偷偷掉...
    心匠與匠心閱讀 420評論 0 1
  • 笨鳥已經(jīng)先飛了好幾年床未,聰明的鳥兒想要迎頭趕上,只有來一次鳳凰涅槃振坚。 大賓是我兒時(shí)的鄰居和小學(xué)同學(xué)薇搁,小時(shí)候的他比較內(nèi)...
    擺靈閱讀 2,801評論 24 77