組件化第二篇:CocoaPods的使用

常用命令總結(jié)寫在前面,具體分析往下看

# 檢索框架
pod search 框架名關(guān)鍵字

# 創(chuàng)建項(xiàng)目,并cd到工程文件所在目錄,創(chuàng)建Podfile文件
pod init

# pod install和pod update的選擇(CocoaPods1.0.1之后)
# 安裝框架,不會(huì)直接更新repo庫
pod install
# 更新框架,如果不加--no-repo-update,默認(rèn)會(huì)更新repo庫
pod update [--verbose] --no-repo-update

Podfile文件內(nèi)容(建議使用Xcode進(jìn)行編輯)

# 支持的iOS系統(tǒng)的最低版本
platform:ios,'8.0'
# 忽略引入庫的所有警告(強(qiáng)迫癥者的福音啊)
inhibit_all_warnings!
# 使用framework(包含swift庫就必須使用此設(shè)置,純OC庫可以不設(shè)置)
use_frameworks!

# 下面兩行是指明依賴庫的來源地址
source 'https://gitclub.cn/CocoaPods/Specs.git'
source '你自己的私有庫鏡像源'

# 做一些安裝之前的更改
pre_install do |installer| 
    ...
end

# 依賴目標(biāo)一般為項(xiàng)目名稱
# 針對(duì)MyApp target引入AFNetworking
# 針對(duì)MyAppTests target引入OCMock,
target 'MyApp' do 
    pod 'AFNetworking', '~> 3.0' 
    target 'MyAppTests' do
       # ???
       inherit! :search_paths 
       pod 'OCMock', '~> 2.0.1' 
    end
end

# ----------------以下命令一般采取系統(tǒng)默認(rèn)設(shè)置,無特別需求無需設(shè)置----------------
# install! 這個(gè)命令是cocoapods聲明的一個(gè)安裝命令,用于安裝引入Podfile里面的依賴庫
install! 'cocoapods', 
  :deterministic_uuids => false, 
  :integrate_targets => false

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

# 作用于哪個(gè)工程
project 'MyProject'

# 這個(gè)是cocoapods的一些配置,官網(wǎng)并沒有太詳細(xì)的說明,一般采取默認(rèn)就好了,也就是不寫.
post_install do |installer|       
   installer.pods_project.targets.each do |target| 
     puts target.name 
   end
end
# ----------------以上命令一般采取系統(tǒng)默認(rèn)設(shè)置,無特別需求無需設(shè)置----------------

Cocopods工作原理圖

Cocopods工作原理.png

檢索第三方框架

  • 檢索命令
pod search 框架關(guān)鍵字
  • 命令作用:從本地緩存第三方框架描述信息生成的檢索文件中檢索相關(guān)框架的信息
  • 遇到的問題
    • 問題描述:Unable to find a pod with name, author, summary, or description matching 'xxx'
    • 解決方案:刪除cocoapods索引文件
    sudo rm ~/Library/Caches/CocoaPods/search_index.json
    

安裝第三方框架

  • 使用Xcode新建一個(gè)工程
  • 打開終端,cd到工程目錄下
  • 生成Podfile文件
    • Podfile文件是使用ruby語法編寫的框架依賴描述文件,就是告訴cocoapods需要下載哪些框架
    • Podfile文件配置語法詳見Podfile語法參考(譯)
    • 創(chuàng)建命令:pod init
    • 使用Xcode or vim編輯器編輯Podfile文件
    • 在終端中使用vim編輯器編輯Podfile步驟
      • vi podfile在vim編輯器中打開podfile文件
      • i鍵進(jìn)入編輯模式
      • 編輯完成后,按esc鍵退出編輯模式
      • :wq組合鍵并回車退出vim編輯器
      • 記得在Podfile文件的頂部加入下面的repo源地址:
      source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
      
    • Podfile示例
      # 指定的repo鏡像源
      source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
      
      # 最低支持的iOS版本
      platform :ios, '8.0'
      
      # 依賴目標(biāo)一般為項(xiàng)目名稱
      target '依賴目標(biāo)' do
          # 以framework的形式使用第三方庫
          use_frameworks!
      
          pod 'AFNetworking', '~> 3.0'    # 網(wǎng)絡(luò)庫
          pod 'SDWebImage', '~>3.8'       # 圖片加載
          pod 'SVProgressHUD'             # Loading框 + 提示框
          pod 'MJRefresh'                 # 下拉刷新
          pod 'HandyFrame'                # 使用frame布局
          pod 'YYModel'                   # 模型轉(zhuǎn)換
      end
      
  • 安裝框架
    // --verbose表示打印詳細(xì)信息
    // --no-repo-update表示不更新本地框架信息源
    
    // 安裝框架,此命令在新版本中不會(huì)更新索引庫
    pod install
    // 更新框架,防止更新索引庫
    pod update [--verbose] --no-repo-update
    
  • 遇到的問題
    • 問題描述:The dependency 'SSZipArchive', '~> 1.6.2' is not used in any concrete target.
    • 解決方案:指定依賴目標(biāo)
    • 從cocoapods 1.0.1及后續(xù)版本必須明確指定依賴目標(biāo)
    # 依賴目標(biāo)一般為項(xiàng)目名稱
    target '依賴目標(biāo)' do
    
    # target數(shù)組 如果有新的target直接加入該數(shù)組
    targetsArray = ['targetName1', 'targetName2', 'targetName3']
    # 循環(huán)指定公用的庫
    targetsArray.each do |t|
        target t do
            pod 'MJRefresh', '~> 1.4.6'
            pod 'Masonry', '~> 0.6.1'
        end
    end
    
    # 指定額外依賴的不同的三方庫
    target 'targetName1' do
      pod 'xxx1'
      pod 'xxx2'
    end
    
    target 'targetName2' do
        pod 'xxx3'
    end
    
  • 安裝完后生成的文件
    • Podfile.lock文件:記錄上一次下載的框架的版本號(hào)
    • *.xcworkspace文件:工作區(qū)文件
  • 以后要添加新的庫,就編輯Podfile文件,cd到工程根目錄下,然后執(zhí)行pod install --no-repo-update命令就可以了
  • pod installpod update沒有指定框架版本號(hào)時(shí)是有區(qū)別
    • pod installPodfile.lock文件存在時(shí)直接讀取并下載框架,如果是團(tuán)隊(duì)開發(fā)為了保證版本一致,建議使用此命令
    • pod update直接讀取Podfile文件中的信息,不管Podfile.lock文件是否存在,所以在團(tuán)隊(duì)開發(fā)時(shí)可能導(dǎo)致大家使用的第三方庫的版本不一致
  • pod installpod update選擇
    • 一般情況下,第一次從共享庫把項(xiàng)目下載下來之后,應(yīng)該使用pod install命令安裝,而不是選擇pod update,目的是為了保證大家使用的第三方框架版本一致
    • 如果以后大家需要升級(jí)第三方框架,那么大家約定好統(tǒng)一再執(zhí)行一次pod update
    • 建議在編寫podfile文件時(shí),明確指定第三方庫的版本,格式如下:pod '第三方庫名稱', '~> 版本號(hào)',這樣不管使用pod install還是pod update效果都是一致的

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 項(xiàng)目組件化、平臺(tái)化是技術(shù)公司的共同目標(biāo),越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 22,847評(píng)論 0 39
  • 一. CocoaPods的介紹 什么是CocoaPods?CocoaPods是一個(gè)負(fù)責(zé)管理iOS項(xiàng)目中第三方開源庫...
    輝712閱讀 4,111評(píng)論 0 7
  • 前言 前幾天發(fā)布我的開源庫<最簡單方便的iOS輪播開源庫:JYCarousel>到CocoaPods的時(shí)候。對(duì)Co...
    Dely閱讀 18,049評(píng)論 12 82
  • CocoaPods 是什么? CocoaPods 是一個(gè)負(fù)責(zé)管理 iOS 項(xiàng)目中第三方開源庫的工具。CocoaPo...
    朝洋閱讀 25,990評(píng)論 3 50
  • 百花園中你最艷 帶著使命而來 微笑著 把春意灑滿人間
    向春光原創(chuàng)文學(xué)閱讀 244評(píng)論 2 8

友情鏈接更多精彩內(nèi)容