Podfile文件解析

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

如果出現(xiàn)上面的那一句必須加上該句,因為其它的第三方是來自CocoaPods
source 'https://github.com/CocoaPods/Specs.git' 

  • use_frameworks!
注意:在Swift 中 導入 第三方 要加上該句!!!

此句的位置很重要 如果放在 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

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


Podfile簡介

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

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 默認情況下,我們不需要指定workspace,而是直接使用與Podfile所在目錄的工程名一樣的workspace就可以了。如果要指定另外的名稱,而不是使用工程的名稱,可以這樣指定:
  • workspace 'MyWorkspace'

source 是指定pod的來源。
如果不指定source,默認是使用CocoaPods官方的source。
通常我們沒有必要添加。
// 如果不想使用官方的,而是在別的地方也有,可以這樣指定
source 'https://github.com/artsy/Specs.git'
// 默認是官方的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 命令用于指定工程所依賴的第三方及第三方庫的版本范圍。

永遠使用最新版本
  • pod 'HYBMasonryAutoCellHeight'

當我們永遠使用遠程倉庫中的最新版本時,我們只需要指定倉庫名即可。當有新的版本發(fā)布時,執(zhí)行 pod update 命令,會更新至最新的版本。因為版本之間可能會存在很大的差異,因此我們不應該采用這種方式,而是指定版本范圍或者指定特定版本。

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

當我們不希望版本更新,而是固定使用指定的版本時,我們應該這么寫法。當遠程有新的版本發(fā)布時,pod是不會去更新新版本的。由于版本變化可能較大,因此有時候我們希望這么做的。

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

當我們不要求固定版本號,而是指定某個范圍時,我們會像上面這么寫法,在工程中見到最多的就是這種寫法。上面這句代碼的意思是:HYBUnicodeReadable的版本可以是1.1.0到2.0.0,但是不包括2.0.0。使用這種寫法是很有用的,因此小版本的升級一般是fix bug,當有bug被fix時,確實應該更新。從1.9.9升級到2.0.0時,不會去更新到2.0.0版本。我們認為從2.0.0是一個大版本,大版本的發(fā)布,通常不是fix bug,而是增加功能或者改動較大。


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

= version 要求版本大于或者等于version,當有新版本時,都會更新至最新版本
< version 要求版本小于version,當超過version版本后,都不會再更新
<= version 要求版本小于或者等于version,當超過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
  • 新建一個項目,名字 CocoaPodsDemo

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

  • 建立Podfile(配置文件)

  • $ touch Podfile

  • 終端輸入 $ vim Podfile 回車鍵盤 輸入 i,進入編輯模式

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

  • 然后按Esc,并且輸入“ :” 進入vim命令模式,然后在冒號后邊輸入wq

  • 注意:鍵盤輸入 :后,才能輸入wq?;剀? 后發(fā)現(xiàn)CocoaPodsDemo項目總目錄中多一個Podfile文件

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

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

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


在終端輸入:

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


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

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

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

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