一 . 概述
1.1 先看幾個概念
- Cocoa
- Cocoa Touch
- CocoaPods
- Podfile
- gem
- Cocoapods 工作原理和源碼分析
Cocoa
Cocoa:開發MAC OS X系統中應用程序的開發框架),包含Foundation和AppKit框架。
是Mac OS X上五大開發框架之一,其它四個是Carbon、POSIX、X11和Java。
使用Cocoa編程環境開發的應用程序即爲Cocoa 應用。
Cocoa Touch
開發iPhone OS系統的應用程序,包含Foundation和UIKit框架(我們在Xcode中新建file時候,第一個就是Cocoa Touch Class)。
CocoaPods
Cocoa 應用開發所需依賴庫管理工具。這是官網https://cocoapods.org。
安裝或者升級CocoaPods:
sudo gem install cocoapods
Podfile
Podfile是一個規範,描述了一個或多個一套工程目標的依賴項.瞭解更多可以參考https://www.jianshu.com/p/b8b889610b7e。
Gem
RubyGems(簡稱 gems)是一個用於對 Ruby組件進行打包的 Ruby打包系統。 它提供一個分發 Ruby 程序和庫的標準格式,還提供一個管理程序包安裝的工具。
Gem是一個管理Ruby庫和程序的標準包,它通過Ruby Gem(如http://rubygems.org/)源來查找、安裝、升級和卸載軟件包,非常的便捷。
Mac OS X中會自帶Ruby庫,所以可以直接使用gem命令。
Cocoapods 工作原理和源碼分析
參看https://www.jianshu.com/p/c17cee5e9c7f,比較簡單清晰
1.2 幾個概念之間的關係
- Ruby (腳本語言):種簡單快捷的面向對象(面向對象程序設計)腳本語言
- RVM (Ruby Version Manager):是ruby版本管理的英文縮寫。(ruby執行需要ruby解釋器,rvm就是管理ruby解釋器版本的,安裝、卸載、更新、切換 等)
- RubygGems:是 Ruby 的一個包管理器。它提供一個分發 Ruby 程序和庫的標準格式,還提供一個管理程序包安裝的工具,一般的ruby的很多插件都有由這個包提供
- CocoaPods:Mac OS X和iOS下的一個第三類庫管理工具。通過CocoaPods工具我們可以爲項目添加被稱爲“Pods”的依賴庫(這些類庫必須是CocoaPods本身所支持的),並且可以輕鬆管理其版本。
二. CocoaPods安裝
2.1 Ruby版本查詢
終端中輸入
ruby -v
我的如下,此時我們暫時不去升級ruby的版本,等下面安裝CocoaPods的時候報版本過低的時候再升級,如果不報錯就是用默認的版本就好了。
2.2 升級Ruby版本(可以先跳過)
終端中輸入,使用命令
brew upgrade ruby
2.3 查看RubyGems版本
終端中輸入,使用命令
gem --version
2.4 升級RubyGems版本
終端中輸入,使用命令
sudo gem update --system
直接輸入mac密碼,然後回車(輸入過程中不會有變化,接着輸入就完了,輸完點擊回車)。
2.5 RubyGems source 域名變更https://gems.ruby-china.com/
下面是源碼鏡像git地址:https://github.com/ruby-china/rubygems-mirror
由於RubyGems源代碼鏡像資源地址發生改變,所以如果沒有修改mac中的鏡像地址,那麼在打包時候會出現各種time out。
首先查看mac中RubyGems source 域名。
終端中輸入
gem sources
如果如下面,就說明已經修改過了
如果不是那麼說明配置不正確,需要重新配置。
先,移除默認的 gem 源
gem sources --remove https://gems.ruby-china.org/(舊鏡像源)
然後,添加新的 gem源
gem sources --add https://gems.ruby-china.com/
最後,查看一下
gem sources
配置gem源完成。
2.6 安裝CocoaPods
sudo gem install cocoapods
如果使用這個報錯,請使用
sudo gem install -n /usr/local/bin cocoapods
或者安裝最新版本
sudo gem install -n /usr/local/bin cocoapods --pre
或者安裝指定版本
sudo gem install -n /usr/local/bin cocoapods -v (版本號)
然後就是等了,可能需要很長時間。等安裝成功之後查看版本。
pod --version
2.7 使用CocoaPods,添加一個sqlite工具庫FMDB
- Xcode新建一個項目(或者已經存在了)
- 打開終端,輸入 cd
- 把項目拖入終端,(獲取項目路徑),回車進入工程目錄
- 輸入 pod init (生成podfile 文件)
- 進入工程目錄中,打開生成的podfile文件,在標記的地方輸入需要的第三方(例如FMDB)
- 如果安裝的CocoaPods版本爲1.8以上,就要切換CDN了,如果不切換在引入第三方庫的時候會報CDN錯誤。(CocoaPods 1.8將CDN切換爲默認的spec repo源,並附帶一些增強功能!CDN支持最初是在1.7版本中引入的,最終在1.7.2中完成。 它旨在大大加快初始設置和依賴性分析。)
- 解決CDN問題(如果CocoaPods版本爲1.8以上,以下的就不用了)。首先,podfile文件中添加source ‘https://github.com/CocoaPods/Specs.git’(注意鏡像源很可能不能使用,因爲每個人的網絡環境不一樣,所以如果這個鏡像源不能使用我們就更換其他的);其次,終端中輸入並執行pod repo remove trunk移除trunk源。
- 終端中執行pod install ,下載第三方庫
下面是工程目錄
下面是處理之後的podfile文件
# 下面是指明依賴庫的來源地址
source 'https://github.com/CocoaPods/Specs.git'
# Uncomment the next line to define a global platform for your project
# platform :ios, '13.2'
target '33_SqliteDemo' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for 33_SqliteDemo
# 引入FMDB三方庫
pod 'FMDB'
#下面是針對測試引入依賴,默認沒有依賴東西。
target '33_SqliteDemoTests' do
inherit! :search_paths
# Pods for testing
end
target '33_SqliteDemoUITests' do
# Pods for testing
end
end
下面是執行pod install之後的終端頁面,可能需要很長時間。
也有可能經過一段時間之後會失敗,比如下面情況
提示錯誤
說明我們的鏡像源有問題了,總是不能下載“包含所有可用三方庫信息的倉庫”。於是我們選擇其他的鏡像源地址。
例如下面的:https://mirror.tuna.tsinghua.edu.cn/help/CocoaPods/。其中使用的方法也很詳細了,於是接下來的步驟如下:
- cd ~/.cocoapods/repos
- pod repo remove master
- git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master
- 然後將podfile文件中source 'https://github.com/CocoaPods/Specs.git’更換爲source ‘https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git’。
- 進入我們的工程根目錄
- 執行pod install
然後看一下項目根目錄,其中多出來不少文件,如下
此時我們將原來的Xcode工程關閉,然後點擊後綴爲“.xcworkspace”文件打開Xcode,之後就可以使用了。
不過在使用的過程中可能出現在import頭文件的時候出現不能自動提示的可能。解決可參考“xcode import pod 文件不提示“https://www.cnblogs.com/cwy173/p/5584109.html“
。