Cocoapods
🇬🇧:CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 93 thousand libraries and is used in over 3 million apps. CocoaPods can help you scale your projects elegantly.
🇨🇳:
CocoaPods
是Swift
和Objective-C
Cocoa
项目的依赖管理器。它拥有超过 93,000 个库,用于超过 300 万个应用程序。CocoaPods
可以帮助您优雅地扩展项目。
-
红宝石💎
Ruby
:一种简单快捷的面向对象(面向对象程序设计)脚本语言,macOS
默认安装了Ruby
,但是版本不是最新的,CocoaPods
基于Ruby
语言编写而成。 -
包管理工具🔧
RubyGem
:gem
是Ruby
的包管理工具,从Ruby 1.9
之后, 安装Ruby
则默认安装着gem
,Mac
默认 安装Ruby 2.6.3
,可以使用gem
安装CocoaPods
。
Cocoapods的安装(旧系统版本可以使用,但是不建议,淘汰)
不建议使用系统自带的
ruby
进行安装cocoapods
,但是还是介绍一下怎么用
- 更换
ruby
源
// 查看ruby源
gem sources -l
// 默认情况下的ruby源:https://rubygems.org/
// 但是这个在国内是用不了的,所以我们需要更换成可以使用的 ruby 源,可以先将查询到的默认源移除
gem sources --remove https://rubygems.org/
// 然后添加可用ruby源
gem source -a https://gems.ruby-china.com/
- 更新
gem
sudo gem updates —system
- 使用
gem
安装Cocoapods
sudo gem install cocoapods
Cocoapods的安装(新系统版本macOS12以上)
MacOS
预装了Ruby
,但是MacOS
包含不是最新版本的Ruby
,并且gem
保存路径有权限问题
- 运行
gem install
时会尝试将gem
保存到系统Ruby
目录下/Library/Ruby/Gems/2.6.0
- 该目录归
root
系统所有,普通用户不允许也不应该写入(这里踩了好多坑都没办法写入,包括关闭SIP
或者使用超级管理员sudo
)
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory
- 解决方案:使用
Homebrew
安装ruby
、Cocoapods
,跳过使用gem
Cocoapods的使用
- 创建
Podfile
文件 - 在新建
Xcode
项目,在终端里cd
到项目的主文件夹(就是包含项目.xcodeproj
的文件),执行命令 - 小技巧:可以
cd
+ 拖拽当前文件夹 直接生成路径
pod init
- 编辑
Podfile
文件 ,podfile
文件添加语句,Podfile
文件实际上是一个说明书,通过配置它,可以告诉CocoaPods
应该安装哪些库。 - 在
AFNetworking
的官网,也可以查询到要安装AFNetworking
具体应该如何写Podfile
,现在将Podfile
修改为:
pod 'AFNetworking', '~> 3.1.0'
- 安装依赖库
// 正常执行这个
pod install
// M1芯片执行有问题可以尝试下面这个
arch -x86_64 pod install
- 安装完成后此时项目文件中会多出
.xcworkspace
文件,以后就通过它来打开项目
Cocoapods其他操作
- 更新库依赖
// 记得 cd 到项目的主文件夹下
pod update
- 卸载
Cocoapods
sudo gem uninstall cocoapods
- 搜索框架
pod search 框架名
- 查看
pod
安装地址
which pod
- 查看
pod
版本,可用于验证安装是否成功
pod --version
注意事项
-
Cocoapods
还通过一个名为Pods.xcconfig
的文件在编译时设置所有的依赖和参数 -
当执行完
pod install
之后,Cocoapods
会生成一个名为Podfile.lock
的文件,这个文件最大的用处在于多人开发,如果没有在Podfile
中指定Pods
版本,那么默认为获取当前三方库的最新版本