iOS組件化干貨系列(三)---最全面的podspec(描述文件) 的寫法

前言

這里主要介紹podspec文件的編輯方法,涉及到多種情況,文件資源的引用、.a文件的引用等,下一篇文章我會介紹子組件的寫法,那是需要你已經掌握里這里的知識后采取研究的。

一、基本的配置


Pod::Spec.new do |s|
  s.name             = 'Module'   #(1)組件的名稱
  s.version          = '1.0.9'    #(2)組件的版本
  s.summary          =  ModuleSummary'  #(3)組件的簡述
  s.homepage         = 'http://192.168.0.1/Module'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }    #(4)用戶協議
  s.author           = { 'you' => 'your_email' }   #(5)郵箱
  s.source           = { :git => 'http://192.168.0.1/Module.git', :tag => s.version.to_s }    #(6)git的地址



  s.ios.deployment_target = '8.0'   #(7)支持的平臺及版本
  s.source_files = 'Module/Classes/**/*'  #(8)代碼源文件地址,**/*表示Classes目錄及其子目錄下所有文件,如果有多個目錄下則用逗號分開,如果需要在項目中分組顯示,這里也要做相應的設置

#(9)資源文件的路徑,圖片、音頻等
  s.resource_bundles = {
     'BunldeName' => ['Module/Assets/*.png','Module/Assets/*']
   }

 #(10)這個組件依賴的其他組件或者第三方庫
    s.dependency 'Masonry'
    s.dependency 'SDWebImage'  
end

  • (1)組件名稱:這個就是你組件的名字 沒啥說的
  • (2)組件的版本: 這個版本號,當驗證podspec 的時候遠端一定要有;我們可以根據不同的版本號拉到不同的代碼
  • (3)組件的簡述 :沒啥說的
  • (4)用戶協議:沒啥說的
  • (5)郵箱:郵箱,沒啥說的
  • (6)git的地址: 這個東西很重要,直接影響到當別人用你的組件的時候 拉的是哪個倉庫的代碼
  • (7)支持的平臺及版本:沒啥說的
  • (8)代碼源文件地址:這個跟(6)一樣重要,作用耶差不多,表示別人用你的組件,拉的是你組件里的哪一部分代碼
  • (9)資源文件的路徑: 當你的組件里涉及到一些UI上的東西,需要引用一些圖片的時候,需要把這個設置一下;
  • (10)這個組件依賴的其他組件或者第三方庫: 你的組件可能沒有那么純凈,會依賴一些別人的組件,那你需要在這里說明,你的組件依賴里哪些東西,比如你寫一個彈窗,可能依賴了Masonry,那么 你這里就必須要寫s.dependency 'Masonry'

二、當你需要增加一個環境變量

這中情況一般很少見,我一般是在創建子組件的時候才使用。
作用:因為在子組件中,一定會用一些共用的代碼,但是有一些小的細節不一樣,這個時候我就會用 這個來區分,在build 的時候 放一個環境變量進去

f.pod_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => 'FIRST_MODULE=1'}

s.pod_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => 'SECOND_MODULE=1'}

f 和 s分別代表兩個子組件,怎么才能這么寫,下一篇文章再介紹
用的時候我們在代碼中一般會判斷這個變量存不存在,而不是判斷它是不是 == 1,判斷等于1 是不準確的

#ifdef FIRST_MODULE
      //there is first module do everything you want
#endif

三、pod中引入.a或者.framework

#自己的framework 后面是路徑
s.vendored_frameworks = ['Module/Vendors/*.framework']
#系統的framework
s.frameworks = ['UIKit', 'MapKit']
#自己的.a 后面是路徑
s.vendored_library = 'Module/Classes/SDK/*.a'
#系統的.a
s.libraries = ['xml2.2','sqlite3.0']


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容