Apple Silicon Mac 迁移/更新系统之后应用闪退?可能是 Rosetta 的问题
苹果今年年初发布了 M2/M2 Pro 的 Mac mini 和 M2 Pro 的 MacBook Pro。作为一个盼着 iMac 或者 Mac mini 上新盼了快一年的我在一节摄入了过多咖啡因的早八有机化学课上冲动消费下单了一台新的 Mac mini。
因为提货要一周,所以在这一周期间我仔细的整理了所有需要搬去新电脑的文件和软件,全然忘了 Mac 迁移助手这个东西。直到把新的 Mac mini 抱回家接上显示器才想起来:“哦,这功能我之前换电脑还用过呢”。
迁移助手 > 点击开始 > 输入密码
两个小时过后,我熟悉的壁纸出现在了显示器上,早就准备好的 Keychron 键盘闪烁着呼吸灯,似乎不止我等不及在新设备上小试一把那些 MacBook Air 跑不了的码和 app。
问题 - 应用闪退
但还没等我想好拿什么来体会一下这新芯片大内存的算力就出问题了。虽然平时打游戏不多,但因为懒得去关,Steam 还是在一开机的时候就试图激活自己。但这个尝试并没有成功,Steam 立刻闪退了,并吐出了一大串在谷歌上都搜不出来的报错信息。后来经过试验,Minecraft、Atom、Adobe 全家桶中个别没有 Silicon 适配的 app、以及所有依赖于 Rosetta 的 app 都打不开了。
科普一下:Rosetta 是苹果开发的二进制编译器,简单来讲就是允许用户在 Apple Silicon 芯片机型上运行只对 Intel 芯片做了适配的 app。
解决方式 - 手动更新 Rosetta
既然怀疑是 Rosetta 的问题,便开始全网搜已有的解决方法。但翻来覆去,似乎也没有很直接的解决办法。最后辗转找到了通过 softwareupdate 手动更新的指令:
$ /usr/sbin/softwareupdate --install-rosetta --agree-to-license如果报错说没有权限,试试在指令前面加上 sudo
$ sudo /usr/sbin/softwareupdate --install-rosetta --agree-to-license因为是从头重新下,可能需要一点时间。等安装完成之后那些原本会闪退的 app 就可以正常打开了。
分析问题
虽然到最后具体是怎么发生的也没有完全搞清楚,但来回测试之后发现问题应该是出在 Intel/M1/M2 下的 Rosetta 版本略有不同,迁移的时候带过来的 M1 Rosetta 在 M2 机型上无法正常运作。这时就只能通过重新安装适配 M2 的 Rosetta 来解决。另外在寻找解决方案的时候发现有时候从新系统降级安装老系统也会出现类似的情况,应该是由于 Rosetta 版本和系统版本不适配造成的,同理通过重装来解决。
