🚶‍♂️

M1 macにVS CodeのRemote SSHで接続してFlutter runしたらCocoapodが無いと言われた時の解決策

2021/11/12に公開

やりたい事

  • 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

参考

GitHubで編集を提案

Discussion