[iOS]CocoaPods安装和使用

1.了解brew、rvm、ruby、gem、cocaspods之间的关系

在 macOS 环境中,Brew、RVM、Ruby、Gem 和 CocoaPods 之间存在以下关系:

  • Homebrew (Brew):Homebrew 是 macOS 上的包管理器,用于安装和管理各种开源软件包。它使您能够轻松地从命令行安装、更新和卸载软件包,包括开发工具、库和其他应用程序。
  • RVM (Ruby Version Manager):RVM 是一个用于管理和安装多个 Ruby 版本的工具。它允许您在同一台计算机上同时安装和切换不同版本的 Ruby。RVM 还提供了一个独立的环境,以隔离不同版本的 Ruby 和它们的依赖项。
  • Ruby:Ruby 是一种动态、面向对象的编程语言,经常用于 Web 开发和脚本编写。它由日本开发者松本行弘(Yukihiro Matsumoto)创建,并且具有简洁、优雅的语法。RVM 用于安装和管理不同版本的 Ruby。
  • Gem:Gem 是 Ruby 的软件包管理系统。它用于安装、管理和分发 Ruby 应用程序和库。Gem 包含可重用的代码库,让开发人员能够轻松地共享和使用 Ruby 的扩展功能。通过 Gem,您可以安装和管理与 Ruby 相关的软件包和依赖项。
  • CocoaPods:CocoaPods 是一个用于管理 iOS 和 macOS 项目中的第三方库依赖项的工具。它使用 Ruby 编写,并且依赖于 Gem 来安装和管理自己的软件包。CocoaPods 允许您在 Xcode 项目中轻松地集成和更新各种开源库。

综上所述,Brew 是用于管理 macOS 上的软件包的包管理器,RVM 是用于管理和安装多个 Ruby 版本的工具,Ruby 是编程语言本身,Gem 是 Ruby 的软件包管理系统,而 CocoaPods 是用于管理 iOS 和 macOS 项目中的第三方库依赖项的工具,它使用 Gem 来安装和管理自己的软件包。Brew、RVM、Ruby、Gem 和 CocoaPods 提供了一套工具链,使您能够更方便地安装、管理和使用 Ruby 和相关的软件包和依赖项。

2.检查并安装brew

验证 Homebrew 是否安装

$ brew doctor

执行以下指令,下载 Homebrew 的安装脚本并自动执行安装过程。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

(1).提示无法连接到服务器

tbd@tbddeMacBook-Air ~ % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 10 ms: Couldn't connect to server

出现这个问题按如下排查:

网络问题:
  • 你的网络连接可能存在问题。请检查你的网络连接是否正常。
  • 如果你在中国大陆,GitHub 的某些资源可能会受到网络审查的影响,你可能需要使用 VPN 或者代理来访问 GitHub。
DNS 解析问题:
  • 打开“系统偏好设置”。
  • 点击“网络”图标。
  • 选择你正在使用的网络服务(如 Wi-Fi 或以太网)。
  • 点击“高级”按钮。
  • 切换到“DNS”标签页。
  • 点击左下角的“+”号,添加一个新的 DNS 服务器地址(例如 8.8.8.8 或 1.1.1.1)。
  • 点击“好”,然后点击“应用”来保存设置。
系统设置:
  • 确认你的系统没有设置错误的代理或者防火墙规则,这些设置可能会阻止你的连接。
在本地的hosts文件中手动解析域名到特定IP:
  • 打开你的终端应用程序(Terminal)。
  • 输入以下命令以使用管理员权限编辑 hosts 文件:
$ sudo nano /etc/hosts

        这里使用 nano 作为文本编辑器,你也可以使用其他你熟悉的编辑器,比如 vi 或 vim。

  • 你将被提示输入你的管理员密码。
  • 在打开的 hosts 文件中,你可以添加一行来指定域名到 IP 的映射。例如:
140.82.114.4 github.com

    查询域名对应的IP地址网站https://mxtoolbox.com/SuperTool.aspx

  • 保存并关闭文件。如果你使用 nano,可以按 Control + O 保存文件更改(Ctrl+O后需要按Enter回车键),然后按 Control + X 退出编辑器。
  • 为了让更改立即生效,你可能需要刷新你的本地 DNS 缓存。在 macOS 上,你可以使用以下命令:
$ sudo killall -HUP mDNSResponder

现在,当你访问 github.com 时,你的系统将直接使用在 hosts 文件中指定的 IP 地址,而不是通过 DNS 解析域名。请确保你使用的是 GitHub 服务器的正确 IP 地址,你可以通过 ping 命令来找到当前的 IP 地址:

$ ping github.com

 (2).安装警告

warning: /opt/homebrew/bin is not in your PATH. Instructions on how to configure your shell for Homebrew canbe found in the "Next steps " section below.

安装 Homebrew 后出现这个错误是因为 Homebrew 的可执行文件目录 /opt/homebrew/bin 没有添加到您的 PATH 环境变量中。为了使 Homebrew 正常工作,您需要确保该路径包含在您的 PATH 环境变量中。

根据您使用的 shell,这里有几种方法来解决这个问题:

如果你使用的是 Bash:

打开您的 ~/.bash_profile 或 ~/.bashrc 文件(通常 ~/.bash_profile 用于登录 shell,而 ~/.bashrc 用于非登录 shell。如果您不确定,可以两个都设置):

$ nano ~/.bash_profile

或者

$ nano ~/.bashrc

然后添加以下行到文件的末尾:

export PATH="/opt/homebrew/bin:$PATH"

保存并关闭文件。在使用 nano 文本编辑器时,保存和退出的步骤通常如下:

  • 按下 Ctrl + O 会提示你保存文件。在底部会显示 File Name to Write: /etc/hosts。
  • 这时候你按下 Enter 键以确认保存。
  • 保存文件后,按下 Ctrl + X 退出 nano 编辑器。

之后,您需要加载新的配置。您可以通过关闭并重新打开终端来做到这一点,或者运行以下命令:

$ source ~/.bash_profile

或者

$ source ~/.bashrc

如果你使用的是 Zsh:

打开您的 ~/.zshrc 文件:

$ nano ~/.zshrc

然后添加以下行到文件的末尾:

export PATH="/opt/homebrew/bin:$PATH"

保存并关闭文件。之后,您需要加载新的配置。您可以通过关闭并重新打开终端来做到这一点,或者运行以下命令:

$ source ~/.zshrc

3.检查并安装rvm

检查rvm是否安装

$ rvm -v

检查提示rvm: command not found时,就表示rvm需要安装。

先用下面命令安装

$ curl -L https://get.rvm.io | bash -s stable

上一步执行完成后再执行

$ source ~/.rvm/scripts/rvm

再次查询rvm的安装情况

$ rvm -v

相关问题rvm: command not found

有时安装rvm后检查正常。但关掉终端重启后,继续执行命令就会提示-bash: rvm: command not found

每次重启终端都需要重新执行$ source ~/.rvm/scripts/rvm,不然使用rvm命令会报错。

192:~ gamin$ rvm -v
-bash: rvm: command not found
192:~ gamin$ source ~/.rvm/scripts/rvm
192:~ gamin$ rvm -v
rvm 1.29.12 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]

这意味着RVM的环境设置没有正确添加到你的shell配置文件中。为了解决这个问题,你需要将RVM的环境初始化命令永久添加到你的shell配置文件中。

根据你使用的终端shell(比如 Bash 或 Zsh),你可以按照以下步骤操作:

对于Bash用户

1).打开你的 .bash_profile 或者 .bashrc 文件。你可以使用文本编辑器或者在终端中使用如下命令:

$ open -a TextEdit ~/.bash_profile

或者

$ open -a TextEdit ~/.bashrc

2).在文件的末尾添加以下内容:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

3).保存并关闭文件。

4).为了使更改生效,你可以重新加载配置文件,通过运行以下指令:

$ source ~/.bash_profile

对于Zsh用户

1).打开你的 .zshrc 文件:

$ open -a TextEdit ~/.zshrc

2).同样在文件的末尾添加:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

3).保存并关闭文件。

4).重新加载配置文件:

$ source ~/.zshrc

完成这些步骤后,每次你打开一个新的终端会话时,RVM都会自动初始化,这样你就不需要每次都手动运行 source ~/.rvm/scripts/rvm 了。

4.检查并安装ruby

先检查ruby的信息,安装cocaPods,ruby环境不得低于2.2.2,否则会报错。

$ ruby -v

安装最新Ruby版本

最好更新到新版本,可以去官网查询ruby最新版本下载 Ruby

 安装最新稳定版本Ruby

$ rvm install 3.2.2

然后输入指令查看是否安装成功

$ rvm list

切换Ruby版本
$ rvm use ruby-3.2.2
移除Ruby版本
$ rvm uninstall ruby-2.6.6

 如果遇到权限问题或其他错误,确保你有足够的权限来执行这些操作,或者尝试使用sudo(在知道自己在做什么的情况下)。

$ sudo rvm remove ruby-2.6.6

5.检查并更新gem ruby

检查gem ruby版本,需要输入一次密码。

$ sudo gem -v

 

更新gem ruby

最新版本,可以去网站查询一下https://rubygems.org/pages/download

$ gem update --system

6.检查并更新ruby源

检查ruby源

$ gem sources -l

如果展示https://rubygems.org/ 则移除此ruby源。

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

然后添加https://gems.ruby-china.com/这个ruby源。

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

注意:先不急着切换,看能否进行下一步的安装。https://rubygems.org/和https://gems.ruby-china.com/这两个源都是能正常使用的,某个源下载安装不了就换一个。

7.安装CocoaPods 

cocoapods官网地址:https://cocoapods.org/

安装cocoapods指令,sudo表示管理员指令,需要输入密码。

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

或者

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

安装后,检查安装情况。

$ pod --version

8.CocoaPods使用

先创建一个iOS测试工程GaminTestDemo

(1).创建Podfile 

Podfile 是一个用于定义你的项目中需要使用哪些第三方依赖的文件。要在你的项目中创建一个 Podfile,你首先需要在终端中定位到你的项目目录,然后执行pod init.

然后打开终端,cd到项目。

$ cd /Users/gamin/Desktop/GaminTestDemo

然后再初始化pod,执行成功后,目录中会多出一个Podfile文件。

$ pod init

(2).管理依赖和版本控制

打开Podfile文件,比如想在项目中使用 Alamofire 网络库。

# 这是一个用于存储 CocoaPods 库的公共资源,并且是官方推荐的替代源,用来代替传统的 GitHub 基于的 Specs 仓库。
source 'https://cdn.cocoapods.org/'
#source 'https://github.com/CocoaPods/Specs.git'# 私有 Specs 仓库
source 'https://github.com/yourusername/PrivatePodSpecs.git'platform :ios, '9.0'target 'GaminTestDemo' douse_frameworks!# Pods for YourProjectNamepod 'Alamofire', '~> 5.2'pod 'YourLibrary', '~> 0.0.1'pod 'MyComponent', '0.0.1', :source => 'https://github.com/other/PrivatePodSpecs.git'
end

use_frameworks! 指示 CocoaPods 使用动态框架而非静态库。

pod 'Alamofire', '~> 5.2' 表示你想要安装 Alamofire,版本约束为大于等于 5.2 但小于 6.0。

一旦你编辑完 Podfile,可以通过以下命令来安装这些依赖:

$ pod install

这个命令会根据 Podfile 的定义来安装所需的库,并创建一个 .xcworkspace 文件。你应当使用这个 workspace 文件来打开你的项目,而不是原来的 .xcodeproj 文件。

为了管理版本控制,CocoaPods 提供了锁定已安装依赖版本的机制。当你运行 pod install 时,CocoaPods 会创建一个名为 Podfile.lock 的文件,它记录了实际安装的库的确切版本。这确保了项目的所有协作者都会使用完全相同的依赖版本,从而避免了因版本不一致导致的构建或运行时问题。

当你想要更新某个库到最新版本时,可以运行:

$ pod update <PodName>

这将更新指定的 pod 以及 Podfile.lock 文件。如果你只运行 pod update,它会尝试更新所有依赖到符合你在 Podfile 中定义的版本约束的最新版本。

(3).版本指定的方式

CocoaPods 支持多种方式来指定依赖库的版本,这里是一些最常用的操作符:

  • ~>:被称为“乐观锁定”操作符,它是最常用的。例如,~> 5.2 表示大于等于 5.2 但小于 6.0 的任何版本。
  • >=:表示版本号大于或等于指定的版本。
  • <=:表示版本号小于或等于指定的版本。
  • >:表示严格大于指定的版本。
  • <:表示严格小于指定的版本。
  • =:表示精确到一个特定版本。

若要指定安装 Alamofire 的版本大于等于 5.2 并且允许超过 6.0,你可以使用如下的语法:

pod 'Alamofire', '>= 5.2'

如果你想要同时包含多个条件,可以列出多个版本要求,例如:

pod 'Alamofire', '>= 5.2', '< 8.0'

选择正确的版本指定方式对于管理项目的稳定性和获取最新的功能和修复都非常重要。在实际应用中,通常推荐使用 ~> 操作符来避免意外的主版本更新带来的潜在问题,除非你确信新的主版本更新不会破坏现有的项目功能。

(4). pod常用指令

设置项目

在项目目录中初始化 CocoaPods,这将创建一个 Podfile,你可以在这里声明项目的依赖。

$ pod init
安装依赖
$ pod install
更新和安装依赖

要更新一个或多个库,你可以使用:

$ pod update YourPodName

如果只更新特定库:

$ pod update [PODNAME]
查查看已安装的库 

列出项目中已安装的 Pod 以及它们的版本

$ pod list
删除库

要从项目中删除一个库,你需要从 Podfile 中移除相应的库声明,然后运行:

$ pod install
搜索可用的库
$ pod search [QUERY]
管理私有仓库

如果你使用私有仓库,你可能需要用到以下命令:

添加私有仓库:

$ pod repo add [REPO_NAME] [URL]

更新私有仓库:

$ pod repo update [REPO_NAME]
清理特定库的缓存
$ pod cache clean 'YourPodName' --all
清理所有 CocoaPods 缓存
$ pod cache clean --all
删除和重新安装
$ rm -rf Pods/
$ rm Podfile.lock
$ pod install

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/315737.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+Vue校园竞赛管理系统的设计与实现

项目介绍&#xff1a; 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;竞赛信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行…

【AIGC调研系列】Sora级别的国产视频大模型-Vidu

Vidu能够达到Sora级别的标准。Vidu被多个来源认为是国内首个Sora级别的视频大模型[2][3][4]。它采用了团队原创的Diffusion与Transformer融合的架构U-ViT&#xff0c;能够生成长达16秒、分辨率高达1080P的高清视频内容[1][6]。此外&#xff0c;Vidu的一致性、运动幅度都达到了S…

HEVC/H.265视频编解码学习笔记–框架及块划分关系

前言 由于本人在学习视频的过程中&#xff0c;觉得分块单元太多搞不清楚其关系&#xff0c;因此本文着重记录这些分块单元的概念以及关联。 一、框架 视频为一帧一帧的图像&#xff0c;其编码的主要核心是压缩空间以及时间上的冗余。因此&#xff0c;视频编码有帧内预测和帧间…

使用docker搭建GitLab个人开发项目私服

一、安装docker 1.更新系统 dnf update # 最后出现这个标识就说明更新系统成功 Complete!2.添加docker源 dnf config-manager --add-repohttps://download.docker.com/linux/centos/docker-ce.repo # 最后出现这个标识就说明添加成功 Adding repo from: https://download.…

uniapp分包,以及通过uni-simple-router进行分包

先说一下uniapp的直接分包方式&#xff0c;很简单&#xff1a; 配置分包信息 打开manifest.json源码视图&#xff0c;添加 “optimization”:{“subPackages”:true} 开启分包优化 我们在根目录下创建一个pagesA文件夹&#xff0c;用来放置需要分包的页面 然后配置路由 运行到…

机器学习:基于Sklearn框架,使用逻辑回归对由心脏病引发的死亡进行预测分析

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

(八)Servlet教程——创建Web项目以及Servlet的实现

1. 打开Idea编辑器 2. 点击界面上的“新建项目”按钮 3. 设置好项目名称和位置 应用服务器选择之前设置好的Tomcat服务器 构建系统默认选择Maven 4. 点击“下一步”按钮 5. 点击“完成”按钮&#xff0c;Idea就创建好了项目&#xff0c;创建完成后的目录结构如下图所示 6. 此…

共享单车(二):项目日志

stdin, stdout, stderr Linux系统下&#xff0c;当一个用户进程被创建时&#xff0c;与之对应的三个数据流&#xff08;stdin&#xff0c;stdout和stderr&#xff0c;即三个文件&#xff09;也会被创建。 stdin&#xff0c;标准输入文件&#xff0c;通常对应着终端的键盘。 s…

将针孔模型相机 应用到3DGS

Motivation 3DGS 的 投影采用的是 CG系的投影矩阵 P P P, 默认相机的 principal point (相机光心) 位于图像的中点处。但是 实际应用的 绝大多数的 相机 并不满足这样一个设定&#xff0c; 因此我们 需要根据 f , c x , c y {f,c_x, c_y} f,cx​,cy​ 这几个参数重新构建3D …

docker安装【zookeeper】【kafka】【provectuslabs/kafka-ui】记录

目录 1.安装zookeeper:3.9.2-jre-172.安装kafka:3.7.03.安装provectuslabs/kafka-ui &#xff08;选做&#xff09;新环境没有jdk&#xff0c;安装jdk-17.0.10备用 mkdir -p /export/{data,apps,logs,conf,downloads}cd /export/downloadscurl -OLk https://download.oracle.…

Docker搭建Maven仓库Nexus

文章目录 一、简介二、Docker部署三、仓库配置四、用户使用Maven五、管理Docker镜像 一、简介 Nexus Repository Manager&#xff08;简称Nexus&#xff09;是一个强大的仓库管理器。 Nexus3支持maven、docker、npm、yum、apt等多种仓库的管理。 建立了 Maven 私服后&#xf…

中国发布首个汽车大模型标准

&#x1f989; AI新闻 &#x1f680; 中国发布首个汽车大模型标准 摘要&#xff1a;中国信息通信研究院于4月28日发布了国内首个汽车大模型标准&#xff0c;标志着汽车行业正式迈向“人工智能&#xff0b;”时代。该标准包含三个核心能力域&#xff1a;场景丰富度、能力支持度…

Unity 异常 bug

OverlapBoxNonAlloc 使用bug 环境&#xff1a; Unity2021.3.15 在测试场景中使用 OverlapBoxNonAlloc 测试检测没有问题 但是到了真实应用场景&#xff0c;使用 OverlapBoxNonAlloc 检测移动中的小怪 小怪碰撞体为&#xff1a;带有 Rigidbody 的Circle Collider 2D 就会出现异…

了解JRE扩展

一、Java 运行环境的扩展 Java 运行环境提供的类库只是核心类&#xff0c;不可能满足用户的全部需求 将类打包为 jar 包&#xff0c;放入扩展 \jre\lib\ext 中&#xff0c;程序就可以使用 import 语句使用扩展中的类 二、字节码文件压缩成 jar 文件 编译源文件 --> 编写…

船用组装式中央空调案例

船用组装式空调的整体介绍 1.1 装置的主要技术数据及配套设备规格 该轮采用的是船用组装式空调装置。 1.1.1 空调装置 1&#xff09;型号&#xff1a;CJKR-116船用组装式空调装置&#xff1b;2&#xff09;制冷型式&#xff1a;直接蒸发式&#xff1b;3&#xff09;制冷量&…

区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测(Matlab)

区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09; 目录 区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基…

MemFire案例-政务应急物联网实时监测预警项目

客户背景 党的十八大以来&#xff0c;中央多次就应急管理工作做出重要指示&#xff1a;要求坚持以防为主、防抗救相结合&#xff0c;全面提升综合防灾能力&#xff1b;坚持生命至上、安全第一&#xff0c;完善安全生产责任制&#xff0c;坚决遏制重特大安全事故。 面对新形势…

【1429】招生管理管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 招生管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

#8松桑前端后花园周刊-谷歌推迟cookie弃用、JS Naked Day、Node22、pnpm9.0、Hexo、JSR、html-to-image

⚡️行业动态 谷歌再次推迟了 Chrome 中第三方 cookie 弃用计划 在 Chrome 上逐步淘汰第三方 cookie 计划的最新进展&#xff1a;延迟到2025年年初开始进行第三方 cookie 弃用。 JS Naked Day 4月24号被社区开发者定为 JS Naked Day&#xff0c;完全没有 JavaScript 的一天&…

在VSCode中调试其他软件执行的python文件

在VSCode中调试其他软件执行的python文件 0. 实际场景 我有一段python代码想在Metashape中运行&#xff0c;但是又想在中间某一步停下来查看变量值。由于Metashape的python环境不容易在vscode中配置&#xff0c;所以直接用vscode调试单个文件的方式无法实现这个想法。还好&am…