解決[Using .fvmrc in /Users/…] FVM が常にホームの .fvmrc を使ってしまう問題を解消

このブログで解決できること

  • fvm use を実行してもプロジェクト直下に .fvmrc が生成されず、常に Using .fvmrc in /Users/xxx と表示される問題の原因を理解できます。
  • グローバル設定に残った .fvmrc を削除し、プロジェクト単位で Flutter SDK を切り替える手順。
  • Homebrew 版 FVM のアンインストールと再セットアップ。

環境メモ

  • macOS 15.4 (Apple Silicon)
  • Homebrew で FVM 3.2.1 をインストールしていた
  • Flutter プロジェクト: sample

発端

sample ディレクトリで fvm use stable を実行すると、毎回次のように表示されてしまう状態でした。

Using .fvmrc in /Users/kabikira
Skipping "pub get" because no pubspec.yaml found.

プロジェクト直下に .fvm/.fvmrc が作られず、ホーム直下の設定が優先されるため、他プロジェクトとバージョンを切り替えられないのが悩みでした。

調査

  1. ホーム直下に ~/.fvmrc~/.fvm/ が存在しており、グローバル設定が機能していた。
  2. さらに ~/Library/Application Support/fvm/.fvmrc も残っており、FVM 3.x の “global config” が別の場所でも効いていた。
  3. fvm doctor が「Directory: /Users/kabikira」を指すなど、FVM がプロジェクトを正しく認識していない挙動が確認できた。
  4. グローバル設定を削除しても、fvm use 実行時に再生成されるケースがあり、Homebrew 版の FVM を一旦アンインストールしてクリーンにする必要が出てきた。

原因

以前ホームディレクトリで FVM の操作(fvm use や fvm global など)をテキトーに行ってしまったことで、ホーム直下や ~/Library/Application Support/fvm/ にグローバル設定の .fvmrc が作成されていました。

そのファイルが残っている限り、FVM は各プロジェクトで fvm use … を実行してもグローバル側を優先してしまい、ホームの .fvmrc を読み続ける状態になっていました。

実際に行った対処

1. FVM の再インストール準備

brew uninstall fvm

Home ディレクトリに残っていた .fvm キャッシュや ~/fvm/versions も削除しました。
Homebrew で FVM を入れ直そうとしたところ、Command Line Tools が古くてエラーがでましたが、ターミナルに表示されている以下コマンドで解決

sudo rm -rf /Library/Developer/CommandLineTools && sudo xcode-select --install

3. FVM の再導入とプロジェクトごとの設定

ターミナル再起動してbrew install fvm で再導入。

brew install fvm 


各プロジェクトで以下を実行し、個別の SDK がセットされることを確認。

cd /path/to/project
fvm use 3.35.5

sample 内で fvm use 3.35.5 を再実行すると、今度はプロジェクト専用の設定として SDK ダウンロードとセットアップが完了。

.fvm/ 配下に flutter_sdk のリンクが作られ、fvm doctor も正しいディレクトリを指すようになりました。
これで他の Flutter プロジェクトでも同じ手順を踏むだけで、バージョンを個別に管理できます。

以上の流れで、FVM を使った Flutter SDK のプロジェクト単位管理を再構築できました。同じ症状で悩んでいる方の参考になれば幸いです。

追記: FVM の運用メモ

  • fvm releases どのFlutterバージョンが使えるのか、最新のstable更新されたかを確認できる。
  • fvm use 3.35.5 は Flutter 3.35.5 を固定する指定。チーム全員で同じバージョンを使うならこの形式がおすすめ。
  • fvm use stable は Stable チャンネルの最新版を追従する指定。最新版を常に使いたい場合に便利だが、プロジェクトによってはバージョンが揃わないので注意。固定したい場合は fvm use stable --pin を使ってその時点の Stable を固定できる。
  • .fvmrc はプロジェクトごとに同じ Flutter バージョンを共有するための設定ファイル。コミットしておくと便利。
  • .vscode/settings.json は VS Code のワークスペース設定。チームで共有したい設定だけを残してコミットする運用が良い。

参考

https://fvm.app
https://zenn.dev/altiveinc/articles/flutter-version-management-3

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です