🚶♂️
M1 macにVS CodeのRemote SSHで接続してFlutter runしたらCocoapodが無いと言われた時の解決策
やりたい事
- M1 Mac miniにVS CodeのRemote SSHで接続して
flutter run
したい
Remote SSH
言わずもがなRemote - SSH - Visual Studio MarketplaceというSSH先のマシンリソースで開発ができるすごい便利なやつを利用する。
問題なくFlutterプロジェクトは開けるし、Dart Analysis Serverも動いてる。
Run and Debug
さてデバッグモードでrunしようかと思い、次のようなconfigurationsにする。
.vscode/launch.js
{
"version": "0.2.0",
"configurations": [
{
"name": "dev",
"request": "launch",
"type": "dart",
"args": [
"--verbose"
]
}
]
}
そうすると次のようにCocoaPodsがインストールされていないと言われてしまう。
Launching lib/main.dart on iPhone 13 in debug mode...
lib/main.dart:1
Warning: CocoaPods not installed. Skipping pod install.
CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
Without CocoaPods, plugins will not work on iOS or macOS.
For more info, see https://flutter.dev/platform-plugins
To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
CocoaPods not installed or not in valid state.
Error launching application on iPhone 13.
Exited (sigterm)
argsに--verbose
つけて詳細ログを見ていると分かるがwhich pod
を実行しており、パスが解決できてないようでエラーになっているようだった。
ターミナルからwhich pod
するとちゃんと解決できている状態なので、VS CodeのRun and Debug
から実行した場合にのみパスが通ってないということである。
つまりは諸々のPATHの設定をしている.zshrc
が読み込まれていない(非対話シェルだから?)という事のようなので、.zshenv
にパスを追加するとwhich pod
が解決できるようになる。
うちの環境ではHomebrewでCocosPodsを入れているので、/opt/homebrew/bin
を追加するとうまくいった。
.zshenv
export PATH="/opt/homebrew/bin:$PATH"
.zshenv
追記した後でM1 Mac mini上でvscode-server
のプロセスをキルして再起動させないと読んでくれないので注意。例えば次のようにキルする。
pkill -f vscode-server
Discussion