【CocoaPods安装环境和流程以及各种情况】

CocoaPods

环境

Homebrew

$ brew --config

*可以发现打印有下面一行:

Homebrew Ruby: 2.6.10 => /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.6.10_1/bin/ruby

*Homebrew 的安装目录为 /usr/local/bin/brew ,而 portable-ruby/ 在 /usr/local/Homebrew/Library/Homebrew/vendor/ 中

安装:参考

Mac环境情况:

macOS Catalina(10.15.x) 版开始,Mac使用/bin/zsh作为默认Shell,其对应的配置文件为/.zshrc

查看Mac的CPU型号,M1

$ uname -m

#M1芯片的打印是:x86_64

权限问题:

修改 /user/local/Homebrew 权限即可,如果 /usr/local 的很多文件都属于其他用户,那就进行全部修改,将 /usr/local 下的全部文件都修改为当前用户和当前用户所属的组:

$ sudo chown -R -v $(whoami): /usr/local/*

Ruby

目前流行的Ruby环境管理工具有 RVM 和 rbenv。这里推荐使用 rbenv,因为它使用shims 文件夹来分离各个 Ruby版本,相对于RVM更加方便。

rbenv

rbenv 是 Ruby的环境管理工具,能够安装、管理、隔离以及在多个Ruby版本之间切换。rbenv使用Homebrew来安装,下面是安装的脚本。

c 复制代码
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew install rbenv ruby-build rbenv-vars

一旦安装 rbenv 完毕,我们需要把以下的设置信息放到你的 Shell 配置文件里面,例如 ~/.bash_profile 或者 ~/.zshrc 等文件,这样能保证每次打开终端的时候都会初始化 rbenv。

c 复制代码
export PATH="$HOME/.rbenv/bin:$PATH" 
eval "$(rbenv init -)"

接着我们就可以安装和设置项目的 Ruby 环境了。

c 复制代码
$ cd $(PROJECT_DIR)
$ rbenv install 3.2.0   //安装3.2.0版本,位置在/Users/_pc_name_/.rbenv/versions/
$ rbenv local 2.7.1		//在项目文件下生成一个文件:.ruby-version

RubyGems 和 Bundler

RubyGems和Bundler这两个主要用来管理CocoaPods和fastlane等第三方工具。

在Ruby的世界,包叫做Gem,可以用 gem install 命令来安装。但是因为RubyGems在管理 Gem 版本时有些缺陷,就有了Bundler,用来检查和安装Gem的特定版本,以此为Ruby项目提供一致性的环境。

c 复制代码
//搜索
$ gem search cocoapods
$ gem install cocoapods 
//安装Bundler
gem install bundler
//更新gem
sudo gem update --system

安装Ruby

  1. 安装ruby,有两种格式 brew install ruby@3.1 或者 brew install ruby
    直接在terminal根目录运行下面的代码

$ brew install ruby@3.1

#运行后会有如下的输出:
ruby@3.1 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have ruby@3.1 first in your PATH, run:
  echo 'export PATH="/usr/local/opt/ruby@3.1/bin:$PATH"' >> ~/.zshrc

For compilers to find ruby@3.1 you may need to set:
  export LDFLAGS="-L/usr/local/opt/ruby@3.1/lib"
  export CPPFLAGS="-I/usr/local/opt/ruby@3.1/include"

For pkg-config to find ruby@3.1 you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/ruby@3.1/lib/pkgconfig"
==> Summary
🍺  /usr/local/Cellar/ruby@3.1/3.1.4: 16,183 files, 43MB
==> Running `brew cleanup ruby@3.1`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

$ brew install ruby

#运行后会有如下的输出:
ruby is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have ruby first in your PATH, run:
  echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc

For compilers to find ruby you may need to set:
  export LDFLAGS="-L/usr/local/opt/ruby/lib"
  export CPPFLAGS="-I/usr/local/opt/ruby/include"

For pkg-config to find ruby you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"
==> Summary
🍺  /usr/local/Cellar/ruby/3.2.2_1: 16,605 files, 46.2MB
==> Running `brew cleanup ruby`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
  1. 按照提示输入下面的命令:

$ echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc

$ source ~/.zshrc

$ source ~/.bash_profile

第一行:是将路径写入到.zshrc,这个可以直接从文件夹找到(路径:/Users/你的用户名/.zshrc),直接按照文本方式打开,复制这个 export PATH=“/usr/local/opt/ruby/bin:$PATH” 到末尾也是一样。

第二行:是让对.zshrc的修改生效

第三行:是让.bash_profile在这个窗口生效,其它窗口包括新开的窗口:无效。

比如你在.bash_profile内有下面的两行, source ~/.bash_profile 后在这个窗口就只用rbenv的Ruby。

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

关于keg-only,点击查看参考

管理Ruby

$ brew update

$ brew install rbenv

在文件 .bashrc 内添加下面内容

eval "$(rbenv init -)"

查看可以安装的ruby版本,并安装

rbenv install -l

rbenv install 3.2.1

设置为全局使用这个ruby版本,并重新'启用/运行'这个版本的ruby

$ rbenv global 3.2.1

$ rbenv rehash

$ which ruby

$ ruby -v

更新Ruby

替换Ruby镜像

方式1

查看当前的ruby源

$ gem sources -l

打印:

*** CURRENT SOURCES ***

https://rubygems.org/

移除ruby当前源,并替换国内镜像

$ gem sources --remove https://rubygems.org/

$ gem sources -a https://gems.ruby-china.com/

替换国内最新镜像源(淘宝的Ruby镜像已经不更新了,https://gems.ruby-china.org域名更新为https://gems.ruby-china.com)

再次查看是否成功替换

$ gem sources -l

方式2

解决brew update 无法访问问题:

// 执行下面这句命令,更换为中科院的镜像:

$ git clone git://mirrors.ustc.edu.cn/homebrew-core.git/ /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core --depth=1

// 把homebrew-core的镜像地址也设为中科院的国内镜像

$ cd "$(brew --repo)"

$ git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"

$ git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
// 更新

$ brew update

// 使用

brew install node/xx1/某个组件2/

CocoaPods

安装CocoaPods

$ sudo gem install cocoapods

*可能会报错:ERROR: While executing gem ... (Gem::FilePermissionError)

You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory

改成下面的方式

$ sudo gem install -n /usr/local/bin cocoapods

然后执行

$ pod setup

*这个执行很慢,耐心等待... pod setup在执行时,会输出Setting up CocoaPods master repo,然后会卡一会儿。这步其实是 Cocoapods 将它的信息下载到 ~/.cocoapods目录下,你可以command+n新建一个终端窗口,执行cd ~/.cocoapods/进入到该文件夹下,然后du -sh *查看文件大小,这个目录最终大小是900多M。出现Setup completed 的时候说明已经完成了

CocoaPods使用

$ pod search AFNetworking

$ cd /user/filename/Your Project

$ vim Podfile

*输入下面的内容

platform :ios, '12.0'

target 'dssf' do

pod 'AFNetworking'

end

*退出并保存

$ pod install

创建方式2:

$ pod init

*会自动创建Podfile,打开文件夹,添加需要的'三方库',最后

$ pod install

安装的一些问题

$ rbenv install 3.2.1

如下error:

BUILD FAILED (macOS 14.1 using ruby-build 20230208.1) (M1及以上芯片导致的问题)

解决方案:

$ CFLAGS="-Wno-error=implicit-function-declaration" RUBY_CONFIGURE_OPTS='--with-readline-dir=/usr/local/opt/readline/' arch -x86_64 rbenv install 3.2.1

执行后可能得error如下:

warning: It seems your ruby installation is missing psych (for YAML output).

To eliminate this warning, please install libyaml and reinstall your ruby.

解决方法: brew install libyaml

然后在运行上面一整串代码: CFLAGS... rbenv install 3.2.1

单元测试引用问题

1.关闭当前的工作空间

2.删除掉文件夹中的workspace

3.然后重新pod install

4.通过workspace打开工作空间,clean+build即可

rm -rf MyProject.xcworkspace
pod install

在pod install之前,请确保已经执行pod setup命令。

本质实际就是: Header Search Paths Library Search Paths

将要引用的'库'名称替换下面代码对应的位置

Targets->ProjectTests->Build Settings->找到path

复制下面的路径,替换最后面的AFNetworking,改成你要引用的'三方库名称'。

Header Search Paths

$(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" 

Library Search Paths

$(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" 

参考的链接

MacOS 配置Ruby环境安装 Cocoapods
2023最新cocoaPods、Homebrew、RVM、Ruby 安装教程
M1电脑上升级Ruby
Homebrew - Error: Failed to upgrade Homebrew Portable Ruby
单元测试无法引用CocoaPods的三方库问题

相关推荐
恋猫de小郭1 个月前
CocoaPods 官宣进入维护模式,不在积极开发新功能,未来将是 Swift Package Manager 的时代
xcode·swift·cocoapods
sziitjin1 个月前
IOS 01 CocoaPods 安装与使用
xcode·cocoapods
依旧风轻1 个月前
不更新索引库, 可以直接使用新的版本么
cocoapods
恋猫de小郭1 个月前
Flutter 正在迁移到 Swift Package Manager ,未来会弃用 CocoaPods 吗?
flutter·swift·cocoapods
书弋江山2 个月前
iOS 创建一个私有的 CocoaPods 库
ios·xcode·cocoapods
WongKyunban2 个月前
iOS 开发包管理之CocoaPods
ios·xcode·cocoapods
棱镜七彩2 个月前
【网安播报】CocoaPods 曝关键漏洞,应用程序面临供应链攻击风险
xcode·cocoapods
Donkor-3 个月前
Mac电脑arm64芯片Cocoapods 的 ffi 兼容问题
macos·bug·xcode·cocoapods·ffi
星coding3 个月前
iOS 之homebrew ruby cocoapods 安装
ios·ruby·cocoapods
fendoudexiaoniao_ios3 个月前
Xcode 打包报错Command PhaseScriptExecution failed with a nonzero exit code
macos·xcode·cocoapods