Podfile文件解析

這個路徑說明第三方來自不是CocoaPods
source 'git@github.com:aliyun/aliyun-specs.git'  

如果出現(xiàn)上面的那一句必須加上該句逼友,因?yàn)槠渌牡谌绞莵碜訡ocoaPods
source 'https://github.com/CocoaPods/Specs.git' 

  • use_frameworks!
注意:在Swift 中 導(dǎo)入 第三方 要加上該句Mξ病=远赚抡!

此句的位置很重要 如果放在 platform end 之間 那么生成的是 圖一 類型蠢甲,
如果是不在 platform end之間 在語句platform :ios, '8.0' 上面 或者 end 下面 則生成的是 圖二 類型

圖一.png

圖二.png

參考:
source 'git@github.com:aliyun/aliyun-specs.git'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
inhibit_all_warnings!
target 'mpush_ios_swift_demo' do
pod 'AlicloudPush', '~> 1.9.1'
pod 'KoaPullToRefresh', '~> 1.0.6'
end


  • pod search source 'git@github.com:aliyun/aliyun-specs.git'
    直接 search是搜索 master倉庫。
  • 不一定能搜索到 git@github.com:aliyun/aliyun-specs.git
如何解決滥崩?
  • pod repo add 把倉庫拉到本地才能搜索岖圈。
  • 或者pod search 通過source指定私有倉庫地址。
手動把阿里云pod倉庫拉去到本地:
搜索某一個第三方
  • Pod search AlicloudHTTPDNS
  • Pod search AlicloudPush

輸入指令
$ touch Podfile //(創(chuàng)建Podfile文件)
$ vim Podfile // (編譯指令)
$pod install


現(xiàn)在的 Podfile 的寫法:
=begin
這里寫注釋
=end

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
inhibit_all_warnings!
xcodeproj 'Demo.xcodeproj'

target :Demo1 do
pod 'AFNetworking', '~> 2.5.4'
end

target :Demo2 do
pod 'MBProgressHUD', '~> 0.9.1'
pod 'MJRefresh', '~> 2.3.2'
end

說說重點(diǎn):xcodeproj 'demo.xcodeporj' 這個指明用于那個項(xiàng)目.
target :Demo1 指明對應(yīng)那個Target
這里說一說 為什么最好先建一個空項(xiàng)目夭委。 大家都知道一個項(xiàng)目可以有多個Target 如果我們的項(xiàng)目名稱和Target 的名稱一致就會產(chǎn)生一個 Pod.debug 的配置文件幅狮,也就不會產(chǎn)生一個和Target 一致的Pod-target.debug 的配置文件。pod.debug 也是一個默認(rèn)的配置文件株灸。
如果我們在 xcodeporj 和 Target 之間 添加 pod 'AFNetworking' 同樣會產(chǎn)生這個默認(rèn)的配置文件崇摄。


Podfile簡介

Podfile的官方說明為:The Podfile is a specification that describes the dependencies of the targets of one or more Xcode projects.即Podfile文件用來配置第三方庫與一或多個Xcode項(xiàng)目之間的依賴信息。

platform :ios, '9.0'
inhibit_all_warnings! //在全局指定不顯示所有所引用的庫中的警告信息

target 'MyApp' do
pod 'ObjectiveSugar', '~> 0.5'
end

target "MyAppTests" do
inherit!: search_paths
pod 'OCMock', '~> 2.0.1'
end


use_frameworks! // 通過指定use_frameworks!要求生成的是framework而不是靜態(tài)庫
inhibit_all_warnings! // 在全局指定不顯示所有所引用的庫中的警告信息慌烧。nhibit_all_warnings! 命令是不顯示所引用的庫中的警告信息逐抑。我們可以指定全局不顯示警告信息,也可以指定某一個庫不顯示警告信息:
pod 'SSZipArchive', :inhibit_warnings => true // 指定不顯示某個庫的警告信息
def shared_pods //定義依賴宏
shared_pods //使用宏

workspace 默認(rèn)情況下屹蚊,我們不需要指定workspace厕氨,而是直接使用與Podfile所在目錄的工程名一樣的workspace就可以了。如果要指定另外的名稱汹粤,而不是使用工程的名稱命斧,可以這樣指定:
  • workspace 'MyWorkspace'

source 是指定pod的來源。
如果不指定source嘱兼,默認(rèn)是使用CocoaPods官方的source国葬。
通常我們沒有必要添加。
// 如果不想使用官方的芹壕,而是在別的地方也有汇四,可以這樣指定
source 'https://github.com/artsy/Specs.git'
// 默認(rèn)是官方的source
source 'https://github.com/CocoaPods/Specs.git'


def
我們還可以通過def命令來聲明一個pod集:

def 'CustomPods'
pod 'IQKeyboardManagerSwift'
end

然后,我們就可以在需要引入的target處引入之:

target 'MyTarget' do
CustomPods
end

這么寫的好處是:如果有多個target踢涌,
而不同target之間并不全包含通孽,那么可以通過這種方式來分開引入。

Dependencies(依賴)
CocoaPods 就是用于管理第三方依賴的睁壁。我們通過Podfile文件來指定工程中的每個target之間與第三方之間的依賴背苦。

有以下三個命令來管理依賴:
pod 指定特定依賴。比如指定依賴AFNetwroking
podspec 提供簡單的API來創(chuàng)建podspec
target 通過target指定工程所依賴的范圍潘明。


Pod命令

pod 命令用于指定工程所依賴的第三方及第三方庫的版本范圍糠惫。

永遠(yuǎn)使用最新版本
  • pod 'HYBMasonryAutoCellHeight'

當(dāng)我們永遠(yuǎn)使用遠(yuǎn)程倉庫中的最新版本時,我們只需要指定倉庫名即可钉疫。當(dāng)有新的版本發(fā)布時,執(zhí)行 pod update 命令巢价,會更新至最新的版本牲阁。因?yàn)榘姹局g可能會存在很大的差異固阁,因此我們不應(yīng)該采用這種方式,而是指定版本范圍或者指定特定版本城菊。

使用固定版本
  • pod 'HYBLoopScrollView', '2.0'

當(dāng)我們不希望版本更新备燃,而是固定使用指定的版本時,我們應(yīng)該這么寫法凌唬。當(dāng)遠(yuǎn)程有新的版本發(fā)布時并齐,pod是不會去更新新版本的。由于版本變化可能較大客税,因此有時候我們希望這么做的况褪。

指定版本范圍
  • pod 'KoaPullToRefresh', '~> 1.0.6'
  • pod 'HYBUnicodeReadable', '~>1.1.0'

當(dāng)我們不要求固定版本號,而是指定某個范圍時更耻,我們會像上面這么寫法测垛,在工程中見到最多的就是這種寫法。上面這句代碼的意思是:HYBUnicodeReadable的版本可以是1.1.0到2.0.0秧均,但是不包括2.0.0食侮。使用這種寫法是很有用的,因此小版本的升級一般是fix bug目胡,當(dāng)有bug被fix時锯七,確實(shí)應(yīng)該更新。從1.9.9升級到2.0.0時誉己,不會去更新到2.0.0版本眉尸。我們認(rèn)為從2.0.0是一個大版本,大版本的發(fā)布巫延,通常不是fix bug效五,而是增加功能或者改動較大。


pod中用于指定范圍的符號如下:

= version 要求版本大于或者等于version炉峰,當(dāng)有新版本時畏妖,都會更新至最新版本
< version 要求版本小于version,當(dāng)超過version版本后疼阔,都不會再更新
<= version 要求版本小于或者等于version戒劫,當(dāng)超過version版本后,都不會再更新
~> version 比如上面說明的version=1.1.0時婆廊,范圍在[1.1.0, 2.0.0)迅细。注意2.0.0是開區(qū)間,也就是不包括2.0.0淘邻。


使用本地庫

pod 'AFNetworking', :path => '~/Documents/AFNetworking'
如果我們的庫是在本地的茵典,那么我們可以通過這樣的命令來指定。由于是引用目錄宾舅,因此外部直接修改目錄中的內(nèi)容统阿,CocoaPods也會更新到最新的彩倚,所以也挺不錯的!


cocoapods官網(wǎng)

https://cocoapods.org

下載cocoapods 的鏈接

https://github.com/kattrali/cocoapods-xcode-plugin


使用CocoaPods
  • 新建一個項(xiàng)目扶平,名字 CocoaPodsDemo

  • 終端中帆离,“cd+空格” 到項(xiàng)目總目錄(注意:包含PodTest文件夾、PodTest.xcodeproj结澄、PodTestTest的那個總目錄) eg: cd /Users/mac/Desktop/

  • 建立Podfile(配置文件)

  • $ touch Podfile

  • 終端輸入 $ vim Podfile 回車鍵盤 輸入 i哥谷,進(jìn)入編輯模式

  • 輸入內(nèi)容:.......

  • 然后按Esc,并且輸入“ :” 進(jìn)入vim命令模式麻献,然后在冒號后邊輸入wq

  • 注意:鍵盤輸入 :后们妥,才能輸入wq∈旯澹回車 后發(fā)現(xiàn)CocoaPodsDemo項(xiàng)目總目錄中多一個Podfile文件

  • 最后終端輸入 pod install王悍,等待一會,就OK了餐曼。

  • 注意:現(xiàn)在打開項(xiàng)目不是點(diǎn)擊 CocoaPodsDemo.xodeproj了压储,而是點(diǎn)擊 CocoaPodsDemo.xcworkspace

  • 對于我們使用cocoapod引入的第三方,我們可以在podfile文件中 增加一句 inhibit_all_warnings! 來要pod的工程不顯示任何警告


在終端輸入:

$ ls //查看當(dāng)前
$ ls -al //把當(dāng)前目錄下所有文件顯示
$ pwd //查看當(dāng)前文件夾的路徑
$ man 命令名 //比如要看看 ls 命令的詳細(xì)用法,執(zhí)行 man ls
$ history //列出最近執(zhí)行過的 幾條命令及編號
$ clear //清除屏幕或窗口內(nèi)容 滾動到頂部
$ cd +工程 //進(jìn)入工程
$ touch Podfile //創(chuàng)建podfile文件
$ pod install --verbose --no-repo-update
$ pod update //更新
$ pod update --no-repo-update //本地更新


補(bǔ)充一個vi的命令(在終端操作):
  1. 在默認(rèn)的"指令模式"下按 i 進(jìn)入編輯模式
  2. 在非指令模式下按 ESC 返回指令模式
  3. 在"指令模式"下輸入:
    :w 保存當(dāng)前文件
    :q 退出編輯,如果文件為保存需要用強(qiáng)制模式
    :q! 強(qiáng)制退出不保存修改
    :wq 組合指令, 保存并退出
  4. 在"指令模式"下移動:
    h 左
    j 下
    k 上
    l 右

MacdeiMac-67:~ mac$ pod update //更新所有的第三方
MacdeiMac-67:~ mac$ ls -al //檢測是否有cocoapods
MacdeiMac-67:~ mac$ cd ~ //進(jìn)入根目錄
MacdeiMac-67:~ mac$ pwd //進(jìn)入當(dāng)前目錄
MacdeiMac-67:~ mac$ pod search jsonkit //搜索
MacdeiMac-67:~ mac$ clear //清除
MacdeiMac-67:~ mac$ ls
Desktop Downloads Movies Pictures Public
Documents Library Music Pods podfile

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末源譬,一起剝皮案震驚了整個濱河市集惋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踩娘,老刑警劉巖刮刑,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異养渴,居然都是意外死亡雷绢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門理卑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翘紊,“玉大人,你說我怎么就攤上這事藐唠》保” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵宇立,是天一觀的道長踪宠。 經(jīng)常有香客問我,道長妈嘹,這世上最難降的妖魔是什么柳琢? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上染厅,老公的妹妹穿的比我還像新娘痘绎。我一直安慰自己,他們只是感情好肖粮,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尔苦,像睡著了一般涩馆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上允坚,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天魂那,我揣著相機(jī)與錄音,去河邊找鬼稠项。 笑死涯雅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的展运。 我是一名探鬼主播活逆,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拗胜!你這毒婦竟也來了蔗候?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤埂软,失蹤者是張志新(化名)和其女友劉穎锈遥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勘畔,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡所灸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了炫七。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爬立。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诉字,靈堂內(nèi)的尸體忽然破棺而出懦尝,到底是詐尸還是另有隱情,我是刑警寧澤壤圃,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布陵霉,位于F島的核電站,受9級特大地震影響伍绳,放射性物質(zhì)發(fā)生泄漏踊挠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望效床。 院中可真熱鬧睹酌,春花似錦、人聲如沸剩檀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沪猴。三九已至辐啄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間运嗜,已是汗流浹背壶辜。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留担租,地道東北人砸民。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像奋救,于是被迫代替她去往敵國和親岭参。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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