梳理M1芯片Mac mini 执行 pod install 失败Ruby直接崩

Python011

梳理M1芯片Mac mini 执行 pod install 失败Ruby直接崩,第1张

环境:2020款M1芯片Mac mini ,Xcode 13.3.1,Ruby为自带2.6.8

简述:

    刚开始安装时还按照正常逻辑安装cocoapods,执行pod install 时,报Ruby崩溃,让上报错误信息:

You may have encountered a buginthe Ruby interpreter or extension libraries.Bug reports are welcome.For details:https://www.ruby-lang.org/bugreport.html

最后几番折腾,知道是 ffi 相关包执行X86指令集,需要适配M1芯片架构,即arm64指令集

主要涉及Ruby版本,我系统版本Mac OS 12.3.1,ruby版本系统自带2.6.8,升级ruby会涉及其他软件包,gem等,皆升级到最新。

此时Ruby升级为3.0.0,再次安装pod,问题解决

详细步骤不再重复造轮子,引用下面这位作者文章,对我帮助很大,感谢:https://www.jianshu.com/p/a768181c1245

集成gitlab CI后,脚本执行pod install后出现两个问题:1.让注册当前Mac mini设备ID到profile文件。这是无需的,我们需要在 xcodebuild archive 时 添加 -destination 'generic/platform=iOS' 即可解决;2. 再次pod install时发现 Pods.xcodeproj 不能正常生成,报 can not open Pods.xcodeproj 错误,解决:在 ~/.profile 文件增加: export LANG=en_US.UTF-8

Mac系统外接显示器色彩不正确的问题,是因为Mac对于未识别的显示器,默认使用ycbcr的色彩空间来驱动,而Windows会默认使用RGB的色彩空间来驱动,而大部分显示器是不支持ycbcr色彩空间的,这个色彩空间主要是用在电视上,也就是说macOS上,未识别的显示器统一认为是电视。而Mac不像Windows,会积极适配各种外接硬件,macOS原生可以识别的显示器十分有限,这也就导致Mac外接第三方显示器基本上都是会有色彩问题的。

对于TypeC接口的Mac,有没有这个问题取决于转接头,有的转接头会兼容,有的转接头不兼容。

对于M1芯片的Mac这个问题暂时无法通过修改系统配置来解决,解决方法同TypeC接口的Mac,使用不同的转接头会有不同的效果。

# 解决方法

解决方法就是在macOS的系统文件夹下放入外接显示器的配置,并设置为RGB色彩空间来驱动。首先要生成配置文件。

在已经接了外接显示器的情况下,在命令行使用ruby运行 这个文件,就可以在用户目录生成配置文件,我的路径为:/Users/zhangzida/DisplayVendorID-5e3/DisplayProductID-3402

接着把这个文件夹放入/System/Library/Displays/Contents/Resources/Overrides就可以了。但是由于系统限制,系统文件夹是只读的,我们还要去关闭系统保护才能在这里面写文件。

# 对于Big Sur:

需要重启进入恢复模式,进入恢复模式的方式是按下Options开机,然后再按Command + R。

在恢复模式下的命令行输入:csrutil authenticated-root disable,然后再重启。

重启后在命令行输入sudo mount -o nobrowse -t apfs /dev/diskNsM /path/to/mntpoint挂载系统盘。diskNsM为 系统盘的设备名,在磁盘工具可以看到:

不器小窝

注意最后的s和之后的内容要截取掉,比如我的系统盘设备名为disk1s5s1,则diskNsM为disk1s5。/path/to/mntpoint为需要挂载的路径,可以为任意路径,我挂载到了下载文件夹。我的整个命令为:sudo mount -o nobrowse -t apfs /dev/disk1s5 /Users/zhangzida/Downloads/。

由于挂载到了下载文件夹,挂载好后,进入下载文件夹,就会进入到系统根目录了,我们把配置文件夹复制到相应的系统目录。

然后需要重建系统snapshot,使用到的命令为:sudo bless --folder /path/to/mntpoint/System/Library/CoreServices --bootefi --create-snapshot,我的情况用到的命令为:sudo bless --folder /Users/zhangzida/Downloads/System/Library/CoreServices --bootefi --create-snapshot。

然后重启电脑即可生效。

# 对于Catalina:

重启进入恢复模式,在恢复模式命令行输入csrutil disable,再重启进入系统。

在系统的命令行输入sudu mount -uw /。

在命令行用mv命令移动配置文件夹到相应的系统目录,我用到的命令为:sudo mv /Users/zhangzida/DisplayVendorID-5e3 /System/Library/Displays/Contents/Resources/Overrides,请自行修改用户名为自己电脑上的。

重启电脑生效。

#

安装homebrew

安装ruby

brew install ruby

安装 cocoapods

brew install cocoapods

要出现

setup completion OK 绿色字样才可以,否则不行,直接创建项目,输入pod init 看看能否出现profile文件等

提前把终端 点击 finder 图标,找到应用程序,找到终端,点击属性,把rosetta 转译勾上即可