筆者是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兩天的體驗,目前來看著兩個兼容問題都不大,都可以解決。