本文由 NRatel 歷史筆記整理而來,如有錯誤歡迎指正。
一、重裝 pod 和使用
1、下載安裝?rvm
curl?-L?get.rvm.io?|?bash?-s?stable
2、使環境變量生效?(zsh)
source?~/.zshrc
source?~/.profile
3、查看rvm版本
rvm?-v
4、重裝ruby
關閉mac?sip(可能需要)
sudo?rvm?remove?3.0.0 (注意sudo)
sudo rvm?install 3.0.0 (注意sudo)
rvm list
rvm use 3.0.0 --default (當存在多格ruby版本時)
ruby -v (確認輸出結果為3.0.0)
報錯,重裝openssl,解決:
m1 rvm install 3.0.0 Error running ‘__rvm_make -j8‘-CSDN博客
brew?uninstall?--ignore-dependencies?openssl@3
rm?-rf?/usr/local/etc/openssl@1.1
brew?reinstall?openssl@1.1
5、安裝 cocoapods
sudo?gem?install?-n?/usr/local/bin?cocoapods
pod --version
6、Pod 使用基礎:
⑴、在 xcode 的根目錄下,使用?pod init 可創建一個默認的 podfile。
⑵、編輯 Podfile,它定義了:
目標平臺:platform :ios, '10.0'
是否使用框架:use_frameworks!
目標依賴的庫:target ‘xxx’?do xxx end
多個目標共享相同的依賴:abstract_target ‘xxx’?do end
指明安裝依賴后執行一些特定操作 post_install do |installer|
⑶、在 xcode 的根目錄下(podfile所在目錄),使用?pod install安裝依賴
⑷、在xcode 的根目錄下(podfile所在目錄),使用?pod update更新依賴(需要時)
? 可指定更新某個庫,如:pod update Alamofire
二、相關概念知識自我答疑
問題1:為什么要安裝ruby 和 rvm?
有些sdk需要更新 pod,
pod 安裝/更新 可能需要先更新 ruby(否則會失敗)
(Podfile是ruby代碼)
更新 ruby 需要先下載安裝 rvm
問題2:什么是ruby 和 rvm?
Ruby: Ruby 是一種面向對象的高級編程語言,以其簡潔明了的語法和強大 的元編程能力而受到開發者的喜愛。Ruby 支持多種編程范式,包括函數式、 命令式和反射式編程。
RVM(Ruby Version Manager): RVM 是一個用于管理和使用多個 Ruby 環 境的工具。它允許開發者在一個系統上安裝多個版本的 Ruby,并能夠在這 些版本之間輕松切換。這對于需要在不同項目中使用不同 Ruby 版本的開發 者來說非常有用,因為不同的項目可能依賴于不同版本的 Ruby 或其生態系 統中的庫(gem)。RVM 不僅能管理 Ruby 解釋器的版本,還能管理 gemsets, 即一組相關的 gems,這樣就可以為每個項目或每個Ruby版本創建獨立的 gem 環境,避免版本沖突。
問題3、Unity在導出xcode工程后,為什么會變成 pod工程?
原因:Unity引入了 ExternalDependencyManager
問題4、使用 pod,對 xcodebuild 構建有什么影響?
⑴. 打開項目時,應使用 .xcworkspace?而不是 .xcodeproj
當在項目中使用 CocoaPods 后,需要使用生成的 .xcworkspace 文件來打開和構建項目,而不是原來的 .xcodeproj 文件。因為 .xcworkspace 文件包含了你的項目以及 CocoaPods 管理的所有依賴。
⑵. xcodebuild 構建命令的對應調整
當使用 xcodebuild 構建項目時,需要指定 .xcworkspace 文件,而不是 .xcodeproj 文件。如下所示:
xcodebuild -workspace YourProject.xcworkspace -scheme YourScheme -configuration Release
⑶、在執行 xcodebuild 前 應保證已執行過 pod install
問題5、Scheme 是什么?
Scheme,翻譯為計劃,方案。
一個 scheme 是一個配置文件,它包含了一系列的動作(Actions),這些動作包括構建(Build)、測試(Test)、運行(Run)、分析(Analyze)、存檔(Archive)等。
在 Xcode 中,選擇 Product?> Scheme > Edit Scheme,可以打開 Scheme 編輯器。然后配置每個動作的詳細設置。
問題6、Podfile.lock 是什么?
Podfile.lock?是 CocoaPods 依賴管理工具生成的一個重要文件,用于鎖定和記錄你項目中所有 CocoaPods 依賴的具體版本。這個文件確保每個團隊成員或 CI/CD 環境在執行 pod install 時使用的依賴版本是一致的,從而避免版本不兼容問題。
版本鎖定: Podfile.lock 文件記錄了 Podfile 中指定的每個庫的確切版本。當你運行 pod install 時,CocoaPods 會參考 Podfile.lock 中的版本信息,而不是直接從 Podfile 中獲取最新兼容版本。這確保了每次安裝的依賴版本一致。
團隊協作: 在團隊開發中,如果沒有 Podfile.lock,不同開發者在不同時間運行 pod install 可能會安裝不同版本的依賴庫,導致潛在的兼容性問題。Podfile.lock 通過鎖定依賴版本,確保所有開發者使用相同版本的庫。
CI/CD 環境一致性: 在持續集成和持續部署環境中,Podfile.lock 確保構建服務器使用與開發環境相同的依賴版本,避免了由于依賴版本變化而導致的構建失敗或行為不一致。
Podfile.lock 文件包含以下主要內容:
PODS:列出所有已安裝的 pods 及其具體版本。
DEPENDENCIES:列出 Podfile 中聲明的依賴庫及其版本要求。
SPEC CHECKSUMS:每個 pod 的規格(spec)的校驗和,用于驗證 pod 規格的完整性。
PODFILE CHECKSUM:整個 Podfile 文件的校驗和,用于檢測 Podfile 是否發生了變化。
COCOAPODS:CocoaPods 的版本信息。
通過提交 Podfile.lock?到版本控制系統,可以避免由于依賴版本不一致導致的問題,從而提高項目的穩定性和可維護性。
但由Unity導出的xcode項目有自己的打包工作流,因此一般并不需要它提交到版本控制系統。