タグ: FVM

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

    解決[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