IntelのMacからM1のMacに移行するのにとんでもなく苦戦しました。
有線とかWifiとかでデータ移したりとかしなかったので、全部ファイルもアプリも手動でいれました。いらないファイル多くて選別したかったからです。
苦戦してから1、2週間経って記憶がちょっと朧げになっているのですが忘備録としてメモ。
アプリ開発でcarthageを使ってるのでいろんなものを導入していく。
まずHomeBrewを入れ、次にRosettaをいれ、carthageをいれ……。この辺りは他の人がいっぱい書いてくれてるので略。
(多分この順番だったような。rosettaは他のアプリを入れた時に入れろって言われた気がする)
Xcodeでアプリビルドしようと思ったらエラーが
/usr/local/bin/carthage : No such file or directory
carthageファイルがないそうです。フォルダ移動なりターミナルで移動なりで確認したところ、確かにない。
調べてみるとM1Macからはusrではなくoptにcarthageファイルは置かれるようになったとか。
なるほでょ。Xcodeはusrを見てるからないだのうんだの言ってるらしい。
なので、以下のコマンドでシンボリックリンクを作って解決
ln -s /opt/homebrew/bin/carthage /usr/local/bin/carthage
でも、/usr/local/bin/だったか/usr/local/bin/carthageだったかにparmissionがないぞって私の場合は言われたので
sudo chown -R $USER /usr/local/bin/
これで権限をつけた後にもう一回、上のlnのコマンド打ってシンボリックリンクを作成。無事できました。
Xcodeビルドできた!と思ったらデバッグエリアになにやらよくわからないエラーが。
Warning: Error creating LLDB target at path ?
'/Users/ユーザー名/Library/Developer/Xcode/DerivedData/アプリ名-文字列/Build/Products/Debug->iphonesimulator/アプリ名.app'- using an empty LLDB target which can cause
slow memory reads from remote devices.
ちょっと何言ってるかわかんないですね(画像略)。
グーグル先生で翻訳してみたりそのまま検索をかけてみたりしてもさっぱりぽん。
結局、ビルドできるしアプリも動くからと動かしていたら突如クラッシュ。
LLDB関連のエラーが。解消してなかったから出たらしく。
rosetta error: unable to get state for thread the runtime suspended
Message from debugger: The LLDB RPC server has crashed. You may need to manually terminate your process. The crash log is located in ~/Library/Logs/DiagnosticReports and has a prefix 'lldb-rpc-server'. Please file a bug and attach the most recent crash log.
rosettaが関係しているらしい。
多分入れた気がする朧げな記憶があったので、一旦本当にインストールしていたか確認しようとグーグル先生に「rosetta インストール 確認」と聞いたところXcodeが動いてる環境がIntelなのかM1なのか確認できるよと言われて試しにアクティビティモニタから確認したところ、見事に「Apple」ひとつもIntelを使ってなかったぞい。XcodeももちろんApple。絶対コレだ。アプリはIntel環境のものなのでエラーが出るのは当然でした。
rosetta環境で動かす方法もグーグル先生は知っている。
1. Xcodeが起動していたらまず終了
2. アプリケーションからXcodeの「情報を見る」を開く
3. Rosettaで開くという設定があるのでチェックをつける
4. Xcodeを起動する
準備できたのでもう一回アクティビティモニタで確認するとちゃんとXcodeがIntelで動いてるじゃありませんか!
えらい!
ビルドしてみても、デバッグエリアにはLLDBがエラーでダメだったぞいなんて書いてない!
えらい!
以上終わり。