笔者是11号在官网下单的16G+512G的MacBook Pro,25号从上海发货,27号下午到手的。到今天已经差不多用了两天,体验下来,对于iOS开发,总结一句话,就是性能强劲,但尚有兼容问题。
笔者之前用的是18款的6核i7的15.6寸MacBook Pro,依然是16G+521G的组合。首先是用XcodeBanchmark这个项目测试了下,在i7的Mac上花了287秒,M1的Mac花了128秒。
接下来是在真机上编译公司的项目,公司的项目依赖了47个库,先clean cache后在编译,i7的Mac花了270秒,M1的Mac花了165秒。编译速度差不多是i7的1.7倍,提升还是很大的。
另外,在编译过程中,风扇几乎没有转动,所以也没有什么噪音。只是在后面的持续测试中,如果短时间连续编译多次,温度升高后,风扇才开始转动起来。但相比i7的,只要一开始编译,风扇就开始呼呼转动,已经是非常好了。
那么,测试到这里,是不是意味着M1的MacBook Pro对于iOS开发者已经非常完美了呢,并不是。上面测试公司项目的时候,我是直接把旧电脑里的项目整体拷贝到新电脑里测试的。接下来,我在M1的MacBook Pro上配置完整的开发环境时,就遇到了兼容性问题。
第一个兼容问题,是在bundle install 和 pod install 的时候,安装使用ffi时,一直报错,导致pod instal一直失败,最后通过搜索,参照https://github.com/CocoaPods/CocoaPods/issues/10220着里面的方法,用 `arch -x86_64 gem install ffi`,才最终成功。
第二个兼容问题,是在模拟器中编译时,一直报错"building for iOS Simulator, but linking in object file built for iOS, file '.../xxx.a' for architecture arm64”,试了网上各种方式,都解决不了,依然报错,最后是通过使用Rosetta运行Xcode,才最终在模拟器上编译成功,但由此带来了巨大的性能下降,编译速度直接降到i7的水平。
我自己分析在模拟器中编译失败的原因是,一些第三方的静态库,对于模拟器只编译了x86的版本,没有arm64的版本,而在M1芯片的MacBook里,模拟器也变成了arm架构,需要arm64的版本,因此导致编译到最后链接阶段时报错失败。
因此,我们可以推测,目前有不少第三方库在M1的Mac上会有兼容问题,在GitHub上,我也的确发现了几个这样的库。比如firebase就有这个问题:https://github.com/firebase/firebase-ios-sdk/issues/6520
这个兼容问题,只是在模拟器中编译时才有,如果时在真机编译,是不会有的,因为过去和现在,真机都是arm架构的。
以上是我使用M1的MacBook Pro两天的体验,目前来看着两个兼容问题都不大,都可以解决。