自定義Cocoapods庫

做Ios開發(fā)會使用Cocoapods來管理第三方依賴庫晒奕,非常好用扣典,指定依賴虹蓄,自動下載依賴。
關(guān)于Cocoapods的安裝可以參考CocoaPods安裝和使用教程這篇文章蜡感。

有一種場景:有2個項目蹬蚁,需要提取一個出一個公共的庫提供給兩個項目使用恃泪,怎么使用Cocoapods解決呢?
可以自定義一個Cocoapods的庫來解決這個問題缚忧,不需要提交到Cocoapods悟泵。
自定義一個公共Cocoapods庫可以封裝公共代碼,提高代碼的復(fù)用闪水,減少代碼的維護(hù)糕非。
自定義Cocoapods庫,需要先生成podspec球榆。

生成podspec

podspec是用來指定為Cocoapods類庫的配置文件(Ruby語法)
可以使用命令創(chuàng)建podspec文件:

pod lib create MyLibrary

也可以自己使用編輯器編寫朽肥。
一般podspec的內(nèi)容都是下面這樣的:

    Pod::Spec.new do |s|
      s.name             = "pod-library"
      s.version          = "0.1.0"
      s.license          = 'Apache License, Version 2.0'
      s.summary          = "A short description of pod-library."
      s.description      = <<-DESC
                           An optional longer description of pod-library
    
                           * Markdown format.
                           * Don't worry about the indent, we strip it!
                           DESC
      s.homepage         = "https://github.com/jjz/pod-library"
    
      s.author           = { "jjz" => "woaf1003@gmail.com" }
      s.source           = { :git => "https://github.com/jjz/pod-library.git", :tag => s.version.to_s }
      s.social_media_url = 'https://github.com/jjz'
    
      s.platform     = :ios, '7.0'
      s.requires_arc = true
    
      s.source_files = 'pod-library/*.{h,m}'
      s.resources = 'pod-library/images.xcassets/**/*.png'
      s.dependency 'AFNetworking', '~> 2.0'
      s.vendored_frameworks='**/*.framework'
      s.preserve_paths = 'LibraryName.a'
      s.frameworks = 'QuartzCore'
    end

這段代碼的意思是:創(chuàng)建一個一個Spec的配置,其中:

  • source_files 指定類庫中的源碼
    需要在source_files中指定要發(fā)布的源代碼文件,這個項目的源代碼都是在pod-library目錄下面持钉,因此我指定了獲取pod-library目錄下的所有的.h.m文件
    如果你需要使用swift就需要指定目錄下面的.swift文件,如果有c++源代碼的還需要指定.mm文件衡招。
    多個目錄使用,分割類似于這樣:

'pod-library/.{h,m}’,'pod-library/utils/.{h,m}’

  • dependency指定類庫中的依賴庫
    這個語法和podfile文件里面的pod文件很像每强,s.dependency后面指定類庫名稱和版本始腾,如果需要在加類庫的話再新起一行,比如:

s.dependency 'OpenSSL', '1.0.110'

  • 指定類庫中的資源文件
    指定類庫中的資源文件,我們可以抽象出來一些公用的控件空执,比如progress浪箭,alert,prompt 等,這些控件需要使用一些資源文件辨绊。
    有兩種指定的方式:

resources 和 resource_bundles
resources 指定的資源在調(diào)用類庫的項目中可以直接調(diào)用奶栖,和調(diào)用項目內(nèi)的資源一樣。
resource_bundles 把需要調(diào)用的資源編譯到bundle來調(diào)用门坷,
在這里我使用的是resources宣鄙。

一般我們有可能打包的資源有聲音,圖片默蚌,xib...

  • name 類庫的名稱
  • version 指定版本
  • license 開源協(xié)議
  • description 簡單描述
  • homepage 個人主頁
  • author 作者信息
  • source 指定git地址
  • platform 指定iOS版本
  • requires_arc 指定支持arc
  • vendored_frameworks 本地的frameworks
  • frameworks 指定需要使用的系統(tǒng)frameworks
  • preserve_paths 本地的.a

在項目中調(diào)用pod-library

創(chuàng)建一個和pod-library同級的目錄冻晤,命名為pod-project,用來調(diào)用pod-library
在pod-project目錄中添加Podfile绸吸。
指定對pod-library的依賴:

    platform :ios, '7.0'
    
    pod ‘pod-library’, :path => ‘../pod-library’

這里需要使用path來指定本地的目錄作為庫的地址
運行安裝命令:

pod install

    pdating local specs repositories
    Analyzing dependencies
    Fetching podspec for `pod-library` from `../pod-library`
    Downloading dependencies
    Installing AFNetworking (2.5.4)
    Installing pod-library (0.1.0)
    Generating Pods project
    Integrating client project

可以看到pod先去下載pod-library鼻弧,然后再下載已經(jīng)指定的pod-library的依賴。

在pod-project更改pod-library的代碼

下載完依賴庫之后惯裕,打開pod-project.xcworkspace文件温数,會看到pods多了一個development pods的目錄
這個目錄下有pod-library項目的代碼以及資源。
可以在這里直接編輯pod-library里的代碼蜻势,在pod-library中提交代碼撑刺。這樣就可以在主項目中編輯代碼,在類庫項目中提交了握玛。

參考 :
making cocoa pods
Using Pod Lib Create

開源地址:
pod-library
pod-project

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末够傍,一起剝皮案震驚了整個濱河市甫菠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冕屯,老刑警劉巖寂诱,帶你破解...
    沈念sama閱讀 212,185評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異安聘,居然都是意外死亡痰洒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評論 3 385
  • 文/潘曉璐 我一進(jìn)店門浴韭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丘喻,“玉大人,你說我怎么就攤上這事念颈∪郏” “怎么了?”我有些...
    開封第一講書人閱讀 157,684評論 0 348
  • 文/不壞的土叔 我叫張陵榴芳,是天一觀的道長嗡靡。 經(jīng)常有香客問我,道長窟感,這世上最難降的妖魔是什么讨彼? 我笑而不...
    開封第一講書人閱讀 56,564評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮肌括,結(jié)果婚禮上点骑,老公的妹妹穿的比我還像新娘酣难。我一直安慰自己谍夭,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,681評論 6 386
  • 文/花漫 我一把揭開白布憨募。 她就那樣靜靜地躺著紧索,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菜谣。 梳的紋絲不亂的頭發(fā)上珠漂,一...
    開封第一講書人閱讀 49,874評論 1 290
  • 那天,我揣著相機(jī)與錄音尾膊,去河邊找鬼媳危。 笑死,一個胖子當(dāng)著我的面吹牛冈敛,可吹牛的內(nèi)容都是我干的待笑。 我是一名探鬼主播,決...
    沈念sama閱讀 39,025評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼抓谴,長吁一口氣:“原來是場噩夢啊……” “哼暮蹂!你這毒婦竟也來了寞缝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,761評論 0 268
  • 序言:老撾萬榮一對情侶失蹤仰泻,失蹤者是張志新(化名)和其女友劉穎荆陆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體集侯,經(jīng)...
    沈念sama閱讀 44,217評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡被啼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,545評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棠枉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趟据。...
    茶點故事閱讀 38,694評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖术健,靈堂內(nèi)的尸體忽然破棺而出汹碱,到底是詐尸還是另有隱情,我是刑警寧澤荞估,帶...
    沈念sama閱讀 34,351評論 4 332
  • 正文 年R本政府宣布咳促,位于F島的核電站,受9級特大地震影響勘伺,放射性物質(zhì)發(fā)生泄漏跪腹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,988評論 3 315
  • 文/蒙蒙 一飞醉、第九天 我趴在偏房一處隱蔽的房頂上張望冲茸。 院中可真熱鬧,春花似錦缅帘、人聲如沸轴术。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逗栽。三九已至,卻和暖如春失暂,著一層夾襖步出監(jiān)牢的瞬間彼宠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評論 1 266
  • 我被黑心中介騙來泰國打工弟塞, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留凭峡,地道東北人。 一個月前我還...
    沈念sama閱讀 46,427評論 2 360
  • 正文 我出身青樓决记,卻偏偏與公主長得像摧冀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,580評論 2 349

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

  • 做iOS開發(fā)時常常會使用Cocoapods來管理第三方依賴庫按价,指定好依賴之后惭适,自動下載依賴即可。關(guān)于Cocoapo...
    姜家志閱讀 3,016評論 0 7
  • 經(jīng)常使用cocoapods來管理第三方依賴庫楼镐,非常好用 關(guān)于cocoapods的安裝可以參考CocoaPods安裝...
    姜家志閱讀 7,156評論 7 12
  • 項目組件化癞志、平臺化是技術(shù)公司的共同目標(biāo),越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件框产,一方面使項目架構(gòu)...
    swu_luo閱讀 21,610評論 0 39
  • CocoaPods 是什么凄杯? CocoaPods 是一個負(fù)責(zé)管理 iOS 項目中第三方開源庫的工具。CocoaPo...
    朝洋閱讀 25,662評論 3 51
  • 這是一張白紙 干干凈凈 沒有痕跡 每一個人都想執(zhí)筆 在這上面 書寫人間的美麗 是曼妙的女子 是紅塵的故事 還是大道...
    風(fēng)吟月影動閱讀 341評論 0 5