031-.podspec的一些說明

一髓削、.podspec的一些說明

一個簡單示例:

Pod::Spec.new do |s|
  s.name             = 'RecordModule'
  s.version          = '0.1.0'
  s.summary          = '錄音組件'

  s.description      = <<-DESC
  錄音組件
                       DESC

  s.homepage         = 'https://github.com/AncientMing/RecordModule'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'AncientMing' => 'chenyun@vkel.cn' }
  s.source           = { :svn => 'http://app-cheny@192.168.2.110:8088/svn/06-project/A-APP/0-code/%E4%BA%91%E5%9B%BE%E6%BC%AB%E6%AD%A5_Modularization_2018/RecordModule_yuntu', :tag => s.version.to_s }

  s.ios.deployment_target = '8.0'
  s.public_header_files = 'RecordModule/Classes/**/VKMessageHeader.h'
  s.source_files = 'RecordModule/Classes/*'
  s.resource_bundles = {
    'RecordModule' => ['RecordModule/Assets/*.png']
  }

  s.dependency 'CYBasicsModule'
  
  s.subspec 'FGRecordManage' do |ss|
      ss.source_files = 'RecordModule/Classes/**/FGRecordManage/**/*'
  end
end

在使用pod的過程中,需要用到.podspec文件葡兑,也就是配置文件

做個說明記錄奖蔓。

1、最外層讹堤,格式化樣板就好

Pod::Spec.new do |s|

end

2吆鹤、name

組件名稱

s.name             = 'RecordModule'

3、version

組件版本

s.version          = '0.1.0'

4洲守、summary

組件概要說明

s.summary          = '錄音組件'

5檀头、description

組件詳細(xì)說明

s.description      = <<-DESC
  錄音組件
                       DESC

6、homepage

首頁岖沛,有的話把網(wǎng)址放出來暑始。

s.homepage         = 'https://github.com/AncientMing/RecordModule'

7、license

協(xié)議婴削,MIT廊镜,隨便拷貝,隨便用

s.license          = { :type => 'MIT', :file => 'LICENSE' }

示例2唉俗,指定許可文件的內(nèi)容

spec.license = { :type => 'MIT', :text => <<-LICENSE
                   Copyright 2012
                   Permission is granted to...
                 LICENSE
               }

8嗤朴、author

作者信息

s.author           = { 'AncientMing' => 'chenyun@vkel.cn' }

若果有多個作者,可以這樣寫

spec.authors = 'Darth Vader', 'Wookiee'

示例2

spec.authors = { 'Darth Vader' => 'darthvader@darkside.com',
                 'Wookiee'     => 'wookiee@aggrrttaaggrrt.com' }

9、source

資源所在地,

示例1虫溜,svn地址

s.source           = { :svn => 'http://app-cheny@192.168.2.110:8088/svn/06-project/A-APP/0-code/%E4%BA%91%E5%9B%BE%E6%BC%AB%E6%AD%A5_Modularization_2018/RecordModule_yuntu', :tag => s.version.to_s }

示例2雹姊,項目git地址,tag值與spec.verison版本一致

spec.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git',
                :tag => spec.version.to_s }

示例3,項目git地址,tag值以v開頭,支持子模塊(子模塊是git的子模塊)

spec.source = { :git => 'https://github.com/typhoon-framework/Typhoon.git',
                :tag => "v#{spec.version}", :submodules => true }

示例4衡楞,項目壓縮包地址

spec.source = { :http => 'http://dev.wechatapp.com/download/sdk/WeChat_SDK_iOS_en.zip' }

示例5吱雏,指定壓縮包地址,并校驗hash值,支持sha1 和 sha256

spec.source = { :http => 'http://dev.wechatapp.com/download/sdk/WeChat_SDK_iOS_en.zip',
                :sha1 => '7e21857fe11a511f472cfd7cfa2d979bd7ab7d96' }

10、deployment_target

支持的版本


s.ios.deployment_target = '8.0'

11瘾境、public_header_files

公開的頭文件

s.public_header_files = 'RecordModule/Classes/**/VKMessageHeader.h'

12歧杏、source_files

資源文件

s.source_files = 'RecordModule/Classes/*'

13、resource_bundles

資源包迷守,一般圖片之類犬绒,這種方式資源文件會被以bundle的形式加入到項目中去,官方建議使用的方式,主要是防止與用戶的命名方式?jīng)_突

s.resource_bundles = {
    'RecordModule' => ['RecordModule/Assets/*.png']
  }

示例2

spec.ios.resource_bundle = { 'MapBox' => 'MapView/Map/Resources/*.png' }

多個路徑

spec.resource_bundles = {
    'MapBox' => ['MapView/Map/Resources/*.png'],
    'OtherResources' => ['MapView/Map/OtherResources/*.png']
  }

資源文件另一種方式,這種比較常見

spec.resource = 'Resources/HockeySDK.bundle'
spec.resources = ['Images/*.png', 'Sounds/*']

14、dependency

依賴

s.dependency 'CYBasicsModule'

指定版本

spec.dependency 'AFNetworking', '~> 1.0'

15兑凿、subspec

子文件夾

s.subspec 'FMDB' do |ss|
      ss.source_files = 'RecordModule/Classes/**/FMDB/**/*'
  end

16凯力、vendored_libraries

依賴的第三方.a庫

ss.vendored_libraries = 'RecordModule/Classes/**/*.{a}'

17茵瘾、vendored_frameworks

依賴的第三方framework庫

ss.vendored_frameworks = 'MessageModule/Classes/**/*.{framework}'

18、frameworks

依賴的系統(tǒng)framework庫

s.frameworks = 'CoreLocation','QuartzCore'

19咐鹤、libraries

依賴的系統(tǒng)非framework庫

s.libraries = 'sqlite3.0'

20拗秘、screenshots

截屏圖


s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'

單個截圖

spec.screenshot  = 'http://dl.dropbox.com/u/378729/MBProgressHUD/1.png'

21、social_media_url

社交URL

s.social_media_url = 'https://twitter.com/AFNetworking'

22慷暂、requires_arc

是否ARC文件,默認(rèn)true,如果不是,會自動添加-fno-objc-arc compiler flag

是 ARC文件如下

ss.requires_arc = true

不是 ARC文件如下

ss.requires_arc = false

部分是ARC

spec.requires_arc = false
spec.requires_arc = 'Classes/Arc'   //該文件夾下是ARC,其它非ARC
spec.requires_arc = ['Classes/*ARC.m', 'Classes/ARC.mm']

23、pch_AF

pch文件

pch_AF = <<-EOS
#ifndef TARGET_OS_IOS
  #define TARGET_OS_IOS TARGET_OS_IPHONE
#endif
#ifndef TARGET_OS_WATCH
  #define TARGET_OS_WATCH 0
#endif
#ifndef TARGET_OS_TV
  #define TARGET_OS_TV 0
#endif
EOS

24晨雳、prefix_header_contents

類似于pch,文件,多個用逗號隔開

示例1

s.prefix_header_contents = pch_AF

示例2

spec.prefix_header_contents = '#import <UIKit/UIKit.h>', '#import <Foundation/Foundation.h>'

示例3

s.prefix_header_contents = <<-EOS
 #ifdef __OBJC__
 #import "SGExtension.h"    //SGExtension包含了所有頭文件
 #endif 
EOS
end

示例4

spec.prefix_header_file = 'iphone/include/prefix.pch'

25行瑞、private_header_files

私有頭文件

spec.private_header_files = 'Headers/Private/*.h'

26、documentation_url

文檔說明

spec.documentation_url = 'http://www.example.com/docs.html'

27餐禁、prepare_command

在pod文件下載完畢之后,執(zhí)行的命令,原文如下

A bash script that will be executed after the Pod is downloaded. This command can be used to create, delete and modify any file downloaded and will be ran before any paths for other file attributes of the specification are collected.

This command is executed before the Pod is cleaned and before the Pods project is created. The working directory is the root of the Pod.

If the pod is installed with the :path option this command will not be executed.

單個命令

spec.prepare_command = 'ruby build_files.rb'

多條命令

spec.prepare_command = <<-CMD
                        sed -i 's/MyNameSpacedHeader/Header/g' ./**/*.h
                        sed -i 's/MyNameOtherSpacedHeader/OtherHeader/g' ./**/*.h
                   CMD

28血久、deprecated

是否過期

spec.deprecated = true

29、平臺

如果不寫默認(rèn)支持所有平臺

各個平臺

  s.ios.deployment_target = '7.0'
  s.osx.deployment_target = '10.9'
  s.watchos.deployment_target = '2.0'
  s.tvos.deployment_target = '9.0'

支持的平臺帮非,僅支持

spec.platform = :ios //僅支持ios

30氧吐、weak_frameworks

如果在高版本的OS中調(diào)用新增的功能,并且在低版本的OS中依然能夠運(yùn)行,那么就要用到weak_frameworks.如果引用的某些類或者接口在低版本中并不支持末盔,對于不支持的接口筑舅,可以在運(yùn)行的時候判斷,這樣程序不會出錯陨舱,如果不weak引用翠拣,程序在低版本下啟動的時候就會崩潰掉

spec.weak_framework = 'MessageUI'

31、compiler_flags

spec.compiler_flags = '-DOS_OBJECT_USE_OBJC=0', '-Wno-format'

二游盲、文件匹配

*匹配所有文件

c*匹配以名字C開頭的文件

*c匹配以名字c結(jié)尾的文件

*c*匹配所有名字包含c的文件

** 文件夾以及遞歸子文件夾

?任意一個字符(注意是一個字符)

[set]匹配多個字符,支持取反

{p,q}匹配名字包括p 或者 q的文件

例子:

"JSONKit.?"    #=> ["JSONKit.h", "JSONKit.m"]   //JSONKit.字符
"*.[a-z][a-z]" #=> ["CHANGELOG.md", "README.md"]//.兩個a-z的字母
"*.[^m]*"      #=> ["JSONKit.h"]                //.不是m的字符
"*.{h,m}"      #=> ["JSONKit.h", "JSONKit.m"]   //包含.h或者.m
"*"            #=> ["CHANGELOG.md", "JSONKit.h", "JSONKit.m", "README.md"]//所有文件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末误墓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子益缎,更是在濱河造成了極大的恐慌谜慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莺奔,死亡現(xiàn)場離奇詭異欣范,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)令哟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門熙卡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人励饵,你說我怎么就攤上這事驳癌。” “怎么了役听?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵颓鲜,是天一觀的道長表窘。 經(jīng)常有香客問我,道長甜滨,這世上最難降的妖魔是什么乐严? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮衣摩,結(jié)果婚禮上昂验,老公的妹妹穿的比我還像新娘。我一直安慰自己艾扮,他們只是感情好既琴,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泡嘴,像睡著了一般甫恩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酌予,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天磺箕,我揣著相機(jī)與錄音,去河邊找鬼抛虫。 笑死松靡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的建椰。 我是一名探鬼主播击困,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼广凸!你這毒婦竟也來了阅茶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤谅海,失蹤者是張志新(化名)和其女友劉穎脸哀,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扭吁,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撞蜂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了侥袜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝌诡。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖枫吧,靈堂內(nèi)的尸體忽然破棺而出浦旱,到底是詐尸還是另有隱情,我是刑警寧澤九杂,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布颁湖,位于F島的核電站宣蠕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏甥捺。R本人自食惡果不足惜抢蚀,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镰禾。 院中可真熱鬧皿曲,春花似錦、人聲如沸吴侦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妈倔。三九已至博投,卻和暖如春绸贡,著一層夾襖步出監(jiān)牢的瞬間盯蝴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工听怕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留捧挺,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓尿瞭,卻偏偏與公主長得像闽烙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子声搁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

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

  • 1黑竞、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,969評論 3 119
  • 新浪被黑了 激活的心力都沒有 棄用了 以后畫畫就在這里吧
    自然存在物閱讀 225評論 0 0
  • 我喜歡你,不管你有沒有錢疏旨,什么身份很魂。
    魚點閱讀 360評論 1 1
  • 近日面試較多,余之選擇亦多檐涝,竟致心浮氣躁遏匆,學(xué)習(xí)總是不得入門。與兄弟聊天谁榜,苦惱自然帶與他幅聘,或許是偶然之意,聽得他的分...
    元宇宙協(xié)會閱讀 253評論 1 1
  • 朱光潛在英國愛丁堡大學(xué)學(xué)習(xí)時窃植,學(xué)過文學(xué)帝蒿、心理學(xué)和哲學(xué),他原本就愛好廣泛巷怜,經(jīng)過比較和思索陵叽,他發(fā)現(xiàn)美學(xué)是他最感興趣的狞尔,...
    清靜漣心閱讀 509評論 0 0