mac电脑安装cocoapods出错,以及安装最新版本ruby方法

macbook安装cocoapods时碰到一个报错:大概率是ruby的版本太低导致的

sudo gem install cocoapods
ERROR:  Error installing cocoapods:
ERROR: Failed to build gem native extension.
...
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

出现这种情况,大概率是我电脑 ruby 的版本太低了,导致不能安装最新的CocoaPods

安装flutter的环境参考官方文档:Start building Flutter native desktop apps on macOS - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

那不安装最新 CocoaPods ,指定一个低版本是否可行呢?参考 Mac Flutter环境配置 — CocoaPods not installed解决方案。

sudo gem install cocoapods -v 1.8.4

使用如上命令确实安装成功了,但在 Flutter 中启动 Xcode 就会报错,启动失败。

Warning: CocoaPods minimum required version 1.9.0 or greater not installed. Skipping pod install.

根据以上,提醒我们需要一个至少 1.9 版本的 CocoaPods,那我卸载然后继续安装 1.9 版本是否就可以了呢?

# 卸载
sudo gem uninstall cocoapodssudo gem install cocoapods -v 1.9.4

我尝试后,发现又安装失败。所以现在的情况就只有一个办法,升级 ruby

使用 homebrew 安装新版本 ruby:

brew install ruby

会在安装完后提示两个路径:将这两个路径复制到你的命令行,重新执行一下 

 

我们配置新安装ruby的环境变量,不用多想,按照提示来(不要复制如下路径,复制你终端提示的命令)

echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> /Users/**/.bash_profileexport LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"source /Users/**/.bash_profile

就可以看到版本最新了:
 

再安装 cocoapods,如果之前有安装记得先卸载(卸载命令上面有):

# 卸载
sudo gem uninstall cocoapods# 安装
sudo gem install cocoapods

就会提示安装成功了: 

 

如果上面安装后运行项目还提醒没有安装 cocoapods not installing,那就这样做:

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

 

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

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

相关文章

Mountain Lake - Forest Pack

从头开始构建的50个岩石森林资源集合,充分利用了HDRP。还支持Universal 和Built-In。 支持Unity 2020.3+、高清渲染管线、通用渲染管线、标准渲染管线。导入包后,按照README中的说明进行操作。 Mountain Lake - Rock & Tree Pack是一个由50个准备好的资源组成的集合,从头…

如何运行心理学知识(心流)来指导工作和生活

如何运用心流来指导工作和生活 如何联系我 作者:鲁伟林 邮箱:thinking_fioa163.com或vlinyes163.com GitHub:https://github.com/thinkingfioa/ReadingSummary 版权声明:文章和记录为个人所有,如果转载或个人学习…

命令行参数、环境变量

1. 命令行参数 大家平时在写主函数时基本是无参的,但其实是有参数的,先介绍前两个参数。 int main(int argc, char* argv[])第二个参数是指针数组,第一个参数是该数组的个数,我们先来写 一段代码来看看指针数组里面是什么。 1 #…

Vue3父子组件传参

一,父子组件传参: 应用场景:父子组件传参 Vue3碎片:defineEmits,defineProps,ref,reactive,onMounted 1.父组件传子组件 a.父组件传参子组件 import { ref} from vue import OnChi…

【力扣】快乐数,哈希集合+快慢指针+数学

快乐数原题地址 方法一:哈希集合 定义函数getNext(n),返回n的所有位的平方和。一直执行ngetNext(n),最终只有2种可能: n停留在1。无限循环且不为1。 证明:情况1是存在的,如力扣的示例一: 接…

微信自动预约小程序开发指南:从小白到专家

随着互联网的发展,小程序已经成为了一个备受欢迎的在线预约平台。本文将详细介绍如何使用第三方制作平台,如乔拓云网,来搭建一个从入门到精通的预约小程序。 首先,我们需要登录乔拓云网,并选择一个适合自己的小程序模板…

汽车控制臂的拓扑优化

前言 本示例使用优化模块通过减小控制臂的体积同时最大化其刚度来优化汽车控制臂的设计。 本页讨论 前言应用描述Abaqus建模方法和仿真技术文件参考 应用描述 本例说明了汽车控制臂的拓扑优化,在拓扑优化过程中,修改设计区域中单元的材料特性(有效地从…

双非本科准备秋招(20.1)—— 并发编程之生产者消费者

生产者消费者 与保护性暂停中的不同,不需要产生结果和消费结果的线程一一对应。 生产者仅负责产生结果数据,不关心数据该如何处理,而消费者专心处理结果数据 JDK 中各种阻塞队列,采用的就是这种模式 代码实现: 首先…

【开源】基于JAVA+Vue+SpringBoot的新能源电池回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户档案模块2.2 电池品类模块2.3 回收机构模块2.4 电池订单模块2.5 客服咨询模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 E-R 图设计 四、系统展示五、核心代码5.1 增改电池类型5.2 查询电池品类5.3 查询电池回…

Excel——合并计算

1.表格的合并计算(单张表格/多个表格) Q:请统计两个表格中各商品的总销量和总销售额,将结果放置在下方任意位置。 A:选择一个需要将合并计算数据放置区域的空白单元格 选择【数据】——【合并计算】,【函…

秘塔科技推出AI搜索产品「秘塔AI搜索」

近日,国内一家人工智能科技公司(秘塔科技)推出了一款AI搜索产品——秘塔AI搜索,能够大幅提升搜索效率,解决日常生活、工作学习等场景中遇到的各类搜索需求。 秘塔AI搜索官网:https://metaso.cn/ 相较于传统…

前端文件下载的多种方式

前端文件下载的多种方式。 前言a标签下载a标签常用属性介绍- target,href,download。 window.location.href下载window.open下载iframe 下载动态生成a标签下载文件url下载文件流下载blob文件流转换常用类型 使用 streamSaver 看实时下载进度 前言 如果我…

B站UP主实时信息获取展示php源码

B站UP主实时数据展示系统 - PHP源码分享 想要实时追踪你心仪的B站UP主的最新动态吗?现在,你可以轻松获取并展示B站UP主的实时数据,包括粉丝数、作品数、头像、播放量等关键信息。 功能亮点: 实时更新:系统通过B站AP…

航芯ACM32G103开发板评测 08 ADC Timer外设测试

航芯ACM32G103开发板评测 08 ADC Timer外设测试 1. 软硬件平台 ACM32G103 Board开发板MDK-ARM Keil 2. 定时器Timer 在一般的MCU芯片中,定时器这个外设资源是非常重要的,一般可以分为SysTick定时器(系统滴答定时器)、常规定时…

CTF秀 ctfshow WEB入门 web1-10 wp精讲

目录 web1_查看源码 web3_抓包 web4-9_目录文件 web10_cookie web1_查看源码 ctrlu 查看源码 web3_抓包 查看源码,无果 抓包,找到flag web4-9_目录文件 GitHub - maurosoria/dirsearch: Web path scanner 下载dirsearch工具扫一下就都出来了 web4-…

以“防方视角”观JS文件信息泄露

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 案例概述02 攻击路径03 防方思路 01 案例概述 这篇文章来自微信公众号“黑白之道”,记录的某师傅从js文件泄露接口信息,未授权获取大量敏感信息以及通过逻辑漏洞登录管理员账…

Vue中路由守卫的详细应用

作为一名web前端开发者,我们肯定经常使用Vue框架来构建我们的项目。而在Vue中,路由是非常重要的一部分,它能够实现页面的跳转和导航,提供更好的用户体验。然而,有时我们需要在路由跳转前或跳转后执行一些特定的逻辑&am…

go语言进阶篇——面向对象(一)

什么是面向对象 在我们设计代码时,比如写一个算法题或者写一个问题结局办法时,我们常常会使用面向过程的方式来书写代码,面向过程主要指的是以解决问题为中心,按照一步步具体的步骤来编写代码或者调用函数,他在问题规…

优化 IT 支出和消除浪费的 8 种主要方法

不懈追求最佳 IT 支出对于任何组织的长期可持续发展和成功都至关重要。在这个技术快速进步的时代,您必须做出明智的决策,消除浪费,同时最大限度地提高技术投资的价值。 从进行 IT 成本分析到采用敏捷预算和技术标准化,这些策略对…

双非本科准备秋招(19.1)—— Synchronized优化

轻量级锁 流程 一个对象虽然有多线程加锁,但是加锁时间是错开的,那么可以用轻量级锁优化。 语法还是synchronized,只是对使用者是透明的。 static final Object obj new Object(); public static void method1() {synchronized( obj ) {//…