自定義Cocoapods庫

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

有一種場景:有2個項目,需要提取一個出一個公共的庫提供給兩個項目使用,怎么使用Cocoapods解決呢?
可以自定義一個Cocoapods的庫來解決這個問題,不需要提交到Cocoapods。
自定義一個公共Cocoapods庫可以封裝公共代碼,提高代碼的復(fù)用,減少代碼的維護。
自定義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'

  • 指定類庫中的資源文件
    指定類庫中的資源文件,我們可以抽象出來一些公用的控件,比如progressalert,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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容