Mac os:12.1
xcode:13.2.1
配置升级:
Homebrew 3.3.12
node: v16.13.2
yarn 1.22.17
react-native-cli
前面我也是根据 react-native 官网 步骤来,一直到 sudo gem install cocoapods 都可以成功安装; (新手: 记得换源http://gems.ruby-china.com ,你有翻 · 墙就忽略吧。)
初始化 react - native 项目
进入AwesomeProject > ios 目录下
Could not find proper version of cocoapods(1.11.2) in any of the sources
这个问题是由于我安装了 rvm ,然后 又通过 rvm 安装了 ruby-2.7.4. 这个就导致。在再安装 cocoapods 的时候。pod 指向的位置全是 rvm 目录下的 ;【注意:如果你也安装了 rvm 】
删除 cocoapods 安装地址
注意:请多次执行查看pod ,如果存在就卸载;保证 pod 找不到为止。
卸载相关的 cocoapods 内容
卸载 全局 ruby
移除 rvm 已经删除 bash_profile 里关于 rvm 内容
彻底移除 bash_file 中的 rvm
这个时候你的内容 环境就恢复如初了
重新安装 pod 且指定目录中
重新安装 react-native
执行 pod
期间报错
Error installing glog
Error installing libevent 【这错我是多次执行 pod install,网路问题 】
PhaseScriptExecution [CP-User]\ Generate\ Specs
library not found for -lCocoaAsyncSocket 错误的修复 ;删除 项目>ios >Pods 文件和 podfile.lock 文件;重新在 ios 目录执行 pod install 或者 pod update;然后重新运行项目, 【注意:File>WorkSpace settting >Build System >New Build System(Defalut) 因为Legacy Build System 可能 打不开 ‘CocoaAsyncSocket’】 .
启动项目
解决问题不易,如果有帮到你,扣个1或者赞。
细说Ruby工程的Bundle以及如何加快bundle install做过Ruby项目的人可能有过我一样的感受,rubygems.org在中国的访问太慢了,每次我们bundle install都要等老长时间,而我们通过浏览器去下载对应的gems文件时却速度刷刷的。。。 为什么会出现这样的情况呢? 明明我们在Gemfile中写的是:
source ""
好了,既然bundle install很慢,那我就去下载gem文件下来到本地,然后运行:
gem install /path/to/gems/***.gem
结果发现,有些gem文件安装速度很快,有些bundle安装很慢。 为啥呢? 我们又如何去避免这样的痛苦呢?
好,那下面我就先来详细说明一下ruby的bundle机制。
首先说一下Gemfile文件,Gemfile就是用来描述你当前ruby工程需要依赖的插件bundle,好比在java的插件工程,当前工程会依赖哪些其他插件,依赖的插件有版本区别。比如下面就是我的一个简单ruby工程的Gemfile文件内容:
source ""
gem "rspec", "~>2.7.0"
gem "rake", "~>0.9.2.2"
第一行说明我bundle下载的服务器
第3行和第4行说明我当前工程需要依赖rspec插件和rake插件
"~>2.7.0"表示需要对于的版本好为 >= 2.7.0 而且 <= 2.8.0
在运行调用代码之前都需要先bundle install好对于的插件bundle
但是写了Gemfile就需要安装bundler插件,这个完全可以通过下面的命令来完成
gem install /path/to/gem/bundler-version.gem
(先下载bundler gem文件到local)
好了,安装好了bundler,就可以执行bundle install了。
但是每次都执行bundle install都很慢很慢,让我无法承受。怎么办?
下载到本地然后gem install,发现如果插件有依赖的话,还是同样很慢,因为它会自动访问服务器去下载需要依赖的插件。既然我本地可以通过浏览器直接下载下来我需要的bundle,能否直接利用到本地的? 答案是可以的。
我们完全可以搭建一个本地的gem mirror服务器,而且非常简单。
首先,下载好所有的gem文件(其实就是bundle文件),注意依赖插件也必须准备好,放在本地某个目录中。 然后在这个目录中执行下面命令:
gem generate_index -d /path/to/your/gemfiles/
cd /path/to/your/gemfiles/
gem server
然后修改你的Gemfile的source,改成如下:
source ""
然后运行bundle install,看到的结果一定是让你激动的效果~
最后,建议每个ruby工程目录中增加一个.rvmrc文件,这个文件就是用来指定你该工程使用的ruby版本,已经bundle安装目录和cache目录。.rvmrc的内容只有一句话:
rvm --create use ruby-1.9.2@myprojectname
然后你每次进到工程目录种后都会看到自动切换到相应版本的ruby提示信息。
注意,第一次设置后,需要重新安装bundler以及bundle install,原因可以自己想一下。
另外,每次修改Gemfile时,都需要bundle install一下,这个时候不会安装所有的bundle,因为上次bundle install的时候会生成一个Gemfile.lock文件,告诉bundler哪些bundle已经安装了,而且依赖关系也知道了。 这次只会安装新增的bundle
链接:
1. Creating a RubyGems Mirror With HTTP Basic Authentication
2. Creating your own RubyGem mirror
3. Bundler说明
报这个ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
权限错误的解决办法
因为ruby环境系统自带,所以Mac系统为了保证自身环境的问题,对权限进行了限制,最终导致一般用户无法对系统的ruby环境相关的文件读写内容。所以解决点也就在这了
解决办法: 1第一种修改权限(不建议这么做,因为是root权限,修改权限可能对系统造成影响,这里不提供修改方法了)
2第二种 两套ruby 环境
第二种方案大体也就分成三步了:
安装针对于用户所使用的ruby环境
导入新的ruby环境的环境变量
查看是否ruby环境是否安装成功
进行安装之前,我们通过以下命令进行排查,查看当前的ruby环境是否是用的系统自带的环境
whichruby
如果ruby使用的路径如下,那么此时就是用的系统自带的ruby环境了
/usr/bin
推荐使用homebrew安装ruby环境,如果没有安装homebrew`,可以通过以下命令安装:
/bin/bash -c"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
假定已经安装了homebrew环境了,使用以下命令进行ruby的安装
brew install ruby
此时可能默认安装到了系统自带的路径,在执行,建议当前安装的最新版本 把2.7.0换成你安装成的最先版本 如果不知道最新版本 可以执行 ruby -v 查看
echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.7.0/bin:$PATH"' >>~/.zshrc
然后在执行
source ~/.zshrc
继续执行which ruby
此时能看到路径已经不是系统路径了,退出终端重新执行安装cocoapods,问题解决