apple 在幾個月前發布了自家的芯片 M1,由于將多核cpu,多核gpu,神經網絡運算,內存和其他一切處理部件高度整合在一起,大大提高數據傳輸速度。發布后好評如潮,我也沒有忍住,入手了一臺最低配的mac air m1。目前 M1 還是有很多軟件不能很好支持,當然,這個無法阻擋我在上面的開發。我給大家分享一下我在apple silicon上開發的過程。
首先,到寫這篇文章的時候還有很多開發軟件不支持跑在M1上,我們來看看當前的狀態。
- Docker正式發布版本不原生支持 apple silicon,preview 版本已經開始支持,但目前問題較多
- VScode正式發布版本不原生支持,insider版本已經開始支持,但目前問題較多
- .NET目前的LTS版本3.1和最新的5.0都不原生支持,目標是6.0版本支持
- NodeJS preview版本支持
- Python支持
所以,如果大家是JS, Python語言技術棧的話,恭喜,你已經開始在 M1 上進行原生開發了,只是目前大多數都在preview階段。
如果你和我一樣是 .NET 技術棧的話,一種方式是使用 Rosetta 來轉換,但是轉換的話就無法體驗 M1 給我們帶來的快感。網上有一個視頻比較 VScode 啟動速度的,使用 Rosetta 轉換的話,明顯慢,大概需要 5-8 秒,但是如果是原生的話,基本是瞬間就完成了(1秒以內)。
所以我使用的是另外一種方式,VScode remote,我在azure上開了一臺虛機,vscode使用ssh的方式遠程上去。下面是一些操作的鏈接
- VScode insider build for Apple Silicon (ARM64)?https://code.visualstudio.com/insiders/
- 配置SSH遠程開發的步驟?https://code.visualstudio.com/docs/remote/ssh
- 在遠程虛機上安裝.net?https://docs.microsoft.com/en-gb/dotnet/core/install/linux
使用云端的虛機的好處是:你已經有一個public地址,所以不需要安裝 ngrok 軟件,可以直接把虛機的 ip 地址直接給到 teams,只需要記得打開對應的端口就可以了。如果你的虛機不是在云端的,那需要單獨再安裝 ngrok。
我的虛機是 ubuntu 20.04 LTS版本,如果你使用的是 windows 的遠程虛機,那需要安裝 openssh,但是這里有一個坑,我之前就掉進去,花了3,4小時才發現是一個已知問題,就是如果你的機器名字和用戶名是一樣的話,就死活登入不了。
另外,我自己的經驗是,遠程開發機器盡量使用 linux。這樣如果你用來開發 python 或者 docker 相關的東西也會少遇到很多坑。
One more thing,目前 Teams 本身還不支持 M1,相信這個會被很快解決,因為 Electron 最近也已經支持了 apple silicon 了。https://www.electronjs.org/blog/electron-11-0
最后,如果大家對目前各大軟件支持apple silicon的進度感興趣的話,可以訪問這個網站,非常實用:https://isapplesiliconready.com/for/developer