CocoaPods使用中級篇

目錄

profile相關(guān)參數(shù)

1. 依賴相關(guān)的指令

  • pod : 聲明一個(gè)依賴庫
    • 版本
    //使用最新的版本
    pod 'SSZipArchive' 
    
    //指定使用某個(gè)版本
    pod 'Objection', '0.9'
    
    //0.1.2與0.2版本之間的最新版本
    pod 'Objection', '~> 0.1.2'
    
    • Build配置
    
      //只有在debug模式下才使用PonyDebugger庫
      pod 'PonyDebugger', :configuration => 'Debug'
    
    • Subspecs 配置
      Subspecs 配置简烤, 只使用pod中某一個(gè)或者某一些子pod      庫(需要pod庫支持)
    //使用QueryKit下的Attribute庫:
    pod 'QueryKit/Attribute'
    
    //使用QueryKit下的Attribute庫和QuerySet庫:
    pod 'QueryKit', :subspecs => ['Attribute', 'QuerySet']
    
    • 本地pod庫(cocoapod會在指定的文件夾下找podspec先巴,所以當(dāng)前文件夾下一定要有podspec文件)
        pod 'AFNetworking', :path => '~/Documents/AFNetworking'
      
    • 設(shè)置pod庫
      //使用master分支
      pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git'
    
      //使用指定分支
      pod 'AFNetworking', :git =>         'https://github.com/gowalla/AFNetworking.git', :branch => 'dev'
    
      //使用指定tag
      pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
    
      //使用某一次commit
      pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af
    
    • 設(shè)置podSpec的來源
pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec'
  • Target : 與project中的target保持一致,默認(rèn)target會繼承外面的依賴庫

簡單應(yīng)用:

target 'ZipApp' do
  pod 'SSZipArchive'
end

繼承別的target的依賴庫

target 'ZipApp' do
  pod 'SSZipArchive'

  target 'ZipAppTests' do
    inherit! :search_paths
    pod 'Nimble'
  end
end

繼承多個(gè)target的依賴庫(ShowsTests 同時(shí)有ShowsApp和)

target 'ShowsApp' do
  pod 'ShowsKit'

  # Has its own copy of ShowsKit + ShowTVAuth
  target 'ShowsTV' do
    pod 'ShowTVAuth'
  end

  target 'ShowsTests' do
    inherit! :search_paths
    pod 'Specta'
    pod 'Expecta'
  end
end
  • 抽象Target : 方便其他target繼承(這個(gè)抽象的target是不存在的)
abstract_target 'Networking' do
  pod 'AlamoFire'

  target 'Networking App 1'
  target 'Networking App 2'
end
# Note: There are no targets called "Shows" in any of this workspace's Xcode projects
abstract_target 'Shows' do
  pod 'ShowsKit'

  # The target ShowsiOS has its own copy of ShowsKit (inherited) + ShowWebAuth (added here)
  target 'ShowsiOS' do
    pod 'ShowWebAuth'
  end

  # The target ShowsTV has its own copy of ShowsKit (inherited) + ShowTVAuth (added here)
  target 'ShowsTV' do
    pod 'ShowTVAuth'
  end

  # Our tests target has its own copy of
  # our testing frameworks, and has access
  # to ShowsKit as well because it is
  # a child of the abstract target 'Shows'

  target 'ShowsTests' do
    inherit! :search_paths
    pod 'Specta'
    pod 'Expecta'
  end
end
  • inherit!:給當(dāng)前target設(shè)置集成模式

參數(shù)有

:complete : 全部繼承父target
:none :全部不繼承
:search_paths :只繼承父target的searchPaths

例如:
target 'App' do
  target 'AppTests' do
    inherit! :search_paths
  end
end

2. Target配置

platform: 兩個(gè)參數(shù)蒲列。一個(gè)是name, 一個(gè)是target
name屬性
osx for OS X, :ios for iOS, :tvos for tvOS, or :watchos for watchOS.

target:版本

例如:

platform :ios, '4.0'
platform :ios
inhibit_all_warnings : 忽略所有庫中的警告购对,也可以指定某一個(gè)具體庫的警告。例如:
//全部忽略
platform :ios, '8.0'

inhibit_all_warnings!

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

target 'TestPod' do

  pod 'SummerOCProjectFrame', '~> 0.0'

end

//某一個(gè)忽略
pod 'SummerOCProjectFrame', '~> 0.0', :inhibit_warnings => true

3. Source : 可以指定CocoaPods Master Repository,也可以自定義的Repository。例如:

source 'https://github.com/artsy/Specs.git'
source 'https://github.com/CocoaPods/Specs.git'

4. Hooks: 提供在初始化過程中接口

plugin:插件镀钓。描述在初始化時(shí)候使用的插件。例如:
plugin 'cocoapods-keys', :keyring => 'Eidolon'
plugin 'slather'
pre_install:在pod下載完初始化前可以通過它做邏輯處理镀迂。例如:
pre_install do |installer|
  # Do something fancy!
end
post_install:在形成project后寫入本地前可以通過它做邏輯處理掸宛。比如設(shè)置target的build setting, 代碼如下:
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['GCC_ENABLE_OBJC_GC'] = 'supported'
    end
  end
end

5. def name end。 如果project依賴的庫很多招拙,比如有自己開發(fā)的庫,有第三方的庫措译,可以對這些庫進(jìn)行分類别凤。例如:

def myPods
pod xxx
pod xxx1
pod xxx2
end

def thirdPods
pod yyy
pod yyy1
pod yyy2
end

target 'xxx' do
  myPods
  thirdPods
end

參考:https://guides.cocoapods.org/syntax/podfile.html#podfile

podspec相關(guān)參數(shù)

  • 一些參數(shù):

    • prefix_header_file : 給pod庫設(shè)置pch文件
    • dependency : 設(shè)置依賴庫
    • weak_framework :兼容高低版本api的問題,類似于主工程中frame里面的option屬性
    • libraries领虹, framework
    • compiler_flags规哪,例如
    spec.compiler_flags = '-DOS_OBJECT_USE_OBJC=0', '-Wno-format'
    
    • prefix_header_contents :給pod庫的pch文件增加文件,例如:
      spec.prefix_header_contents = '#import <UIKit/UIKit.h>'
      spec.prefix_header_contents = '#import <UIKit/UIKit.h>', '#import <Foundation/Foundation.h>'
    
    • source_files, public_header_files(不寫默認(rèn)是所有.h文件)塌衰,private_header_files诉稍。source支持如下幾種源:
    //git源 :git => :tag, :branch, :commit, :submodules
    spec.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git',
                  :tag => spec.version.to_s }
    
    //:svn => :folder, :tag, :revision
    spec.source = { :svn => 'http://svn.code.sf.net/p/polyclipping/code', :tag => '4.8.8' }
    
    //:hg => :revision
    spec.source = { :hg => 'https://bitbucket.org/dcutting/hyperbek', :revision => "#{s.version}" }
    
    //:http => :flatten, :type, :sha256, :sha1
     spec.source = { :http => 'http://dev.wechatapp.com/download/sdk/WeChat_SDK_iOS_en.zip' }
    
    //:path
    
    • vendored_frameworks: pod庫的frame
    • vendored_libraries: 第三方.a文件
spec.vendored_libraries  = 'xxx/Classes/ThirdParty/*.{a}'
  • resource_bundles,resources
spec.resource_bundles = {
    'MapBox' => ['MapView/Map/Resources/*.png'],
   'OtherResources' => ['MapView/Map/OtherResources/*.png']
  }

spec.resources = ['Images/*.png', 'Sounds/*']
  • preserve_path: install 或者 update之后不會更新的文件路徑
spec.preserve_path = 'IMPORTANT.txt'
spec.preserve_paths = 'Frameworks/*.framework'  
  • exclude_files : 不包含的文件最疆。例如:
spec.exclude_files = 'Classes/**/unused.{h,m}'
  • subspec : 子spec杯巨。可以使用spec中所有屬性六荒。比如不同的source_file, 不同的dependencies毅臊。例如:
 //不同的source_file
subspec 'Twitter' do |sp|
  sp.source_files = 'Classes/Twitter'
end

subspec 'Pinboard' do |sp|
  sp.source_files = 'Classes/Pinboard'
end

  Pod::Spec.new do |s|
  s.name = 'RestKit'

  //不同的dependencies
  s.subspec 'Core' do |cs|
    cs.dependency 'RestKit/ObjectMapping'
    cs.dependency 'RestKit/Network'
    cs.dependency 'RestKit/CoreData'
  end

  s.subspec 'ObjectMapping' do |os|
  end
  end

參考:https://guides.cocoapods.org/syntax/podspec.html

清除pod緩存

第一步:
pod cache list //查看看緩存
pod cache clean --all //清除緩存 

如果還不行您朽,就執(zhí)行下面的代碼:
rm ~/Library/Caches/CocoaPods/search_index.json;
pod sutup
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仍源,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舔涎,更是在濱河造成了極大的恐慌笼踩,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亡嫌,死亡現(xiàn)場離奇詭異嚎于,居然都是意外死亡掘而,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門匾旭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镣屹,“玉大人,你說我怎么就攤上這事价涝∨冢” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵色瘩,是天一觀的道長伪窖。 經(jīng)常有香客問我,道長居兆,這世上最難降的妖魔是什么覆山? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮泥栖,結(jié)果婚禮上簇宽,老公的妹妹穿的比我還像新娘。我一直安慰自己吧享,他們只是感情好魏割,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钢颂,像睡著了一般钞它。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上殊鞭,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天遭垛,我揣著相機(jī)與錄音,去河邊找鬼操灿。 笑死锯仪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的趾盐。 我是一名探鬼主播卵酪,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谤碳!你這毒婦竟也來了溃卡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蜒简,失蹤者是張志新(化名)和其女友劉穎瘸羡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搓茬,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡犹赖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年队他,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峻村。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡麸折,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粘昨,到底是詐尸還是另有隱情垢啼,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布张肾,位于F島的核電站芭析,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吞瞪。R本人自食惡果不足惜馁启,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芍秆。 院中可真熱鬧惯疙,春花似錦、人聲如沸妖啥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迹栓。三九已至,卻和暖如春俭缓,著一層夾襖步出監(jiān)牢的瞬間克伊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工华坦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愿吹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓惜姐,卻偏偏與公主長得像犁跪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子歹袁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

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

  • 一. CocoaPods的介紹 什么是CocoaPods坷衍?CocoaPods是一個(gè)負(fù)責(zé)管理iOS項(xiàng)目中第三方開源庫...
    輝712閱讀 3,922評論 0 7
  • 項(xiàng)目組件化、平臺化是技術(shù)公司的共同目標(biāo)条舔,越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件枫耳,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 21,730評論 0 39
  • 前言 前幾天發(fā)布我的開源庫<最簡單方便的iOS輪播開源庫:JYCarousel>到CocoaPods的時(shí)候。對Co...
    Dely閱讀 17,178評論 12 82
  • CocoaPods 是什么孟抗? CocoaPods 是一個(gè)負(fù)責(zé)管理 iOS 項(xiàng)目中第三方開源庫的工具迁杨。CocoaPo...
    朝洋閱讀 25,678評論 3 51
  • 背景 上一篇博客最新的CocoaPods的使用教程(一)里主要講解了CocoPods得簡單的日常使用钻心。但是我們經(jīng)常...
    Dely閱讀 5,802評論 11 34