這個路徑說明第三方來自不是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 下面 則生成的是 圖二 類型
參考:
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 repo add AliyunRepo git@github.com:aliyun/aliyun-specs.git
搜索某一個第三方
- 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)
下載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的命令(在終端操作):
- 在默認(rèn)的"指令模式"下按 i 進(jìn)入編輯模式
- 在非指令模式下按 ESC 返回指令模式
- 在"指令模式"下輸入:
:w 保存當(dāng)前文件
:q 退出編輯,如果文件為保存需要用強(qiáng)制模式
:q! 強(qiáng)制退出不保存修改
:wq 組合指令, 保存并退出 - 在"指令模式"下移動:
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