前两天新入职了公司,公司给配置的电脑是最新的采用M1芯片,arm64架构的mac mini,想着用来开发会不会有很多不兼容的地方,果不其然pod安装完后就跑不起来了。经历了一天的踩坑,终于顺利把pod运行起来,特此记录。
首先,使用arm64架构去安装pod,可以安装,但是运行的时候会报错,因为pod还没有兼容arm64架构。还好苹果为了防止这种情况发生,有另外搞了一个兼容模式,首先找到“终端”app,右键显示简介可以看到这个:
勾选“使用Rosetta打开”,这时再打开终端,就是一个在x86_64架构下运行的环境了。这个选项,是应用程序同时兼容arm64和x86_64时才会有,勾选了之后,软件就会以x86_64架构去运行,苹果自带的软件都有这个选项。第三方的软件,如果还没有兼容arm64架构,苹果就会默认使用Rosetta模式去运行这个软件。
具体说明见这里 如果需要在 Mac 上安裝 Rosetta
苹果并没有默认安装Rosetta,苹果的说明是在开启某些app时会提示安装(应该是开启第三方的x86_64架构app),但我这边一直没有这个提示,所以保险起见可以用命令行手动安装下:
softwareupdate --install-rosetta --agree-to-license
如果安装成功,会提示:
softwareupdate --install-rosetta --agree-to-license
By using the agreetolicense option, you are agreeing that you have run this tool with the license only option and have read and agreed to the terms.
If you do not agree, press CTRL-C and cancel this process immediately.
Package reference com.apple.pkg.RosettaUpdateAuto is missing installKBytes attribute
Install of Rosetta 2 finished successfully
如果你已经安装过了,或者在安装了macOS Big Sur或更高版本的intel芯片mac上运行,会提示:
softwareupdate --install-rosetta --agree-to-license
Installing Rosetta 2 on this system is not supported.
更详细的关于安装Rosetta看这里Installing Rosetta 2 on M1 Apple Silicon Macs
使用Rosetta模式打开终端后,接下来就是安装pod的常规流程了,这个网上很多,这里贴一篇文章 CocoaPods安装方法-2020.12.18。ruby可以使用系统自带的,但有同事反馈使用系统默认ruby报错,如果报错就使用rvm安装和管理ruby。
讲一些几个注意的点:
(1)先安装homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(2)安装pod之前先安装xcode-select,使用Rosetta模式后xcode-select需要重新安装
xcode-select --install
(3)pod安装完成之后,还得安装这个
sudo gem install ffi
至此,pod就能在m1芯片的mac上正常运行了,但有可能你在安装过程中还是会报错,所以贴一下我参考的一些链接,如果安装不顺利可以看看:
https://github.com/CocoaPods/CocoaPods/issues/10220
M1芯片使用cocoapods进行pod install 时,报错[!] Oh no, an error occurred
MAC升级到macOS Catalina重新安装cocoaPods
Ruby 環境設定-for mac
Mac用RVM安装ruby,出现make失败,导致安装不成功
tips:之前项目跑模拟器一直失败,也是因为模拟器现在是arm64版本了,一些第三方库不兼容导致的。这个使用Rosetta也是可以解决的,Xcode和Xcode Simulator都勾选“使用Rosetta打开”,再重启Xcode和Xcode Simulator,Xcode clean一下重新编译就可以了。