LoginSignup
8
5

More than 1 year has passed since last update.

WindowsでFlutterのFVMを使う

Last updated at Posted at 2021-07-12

課題

WindowsでFlutterを使っていて、SDKの違うバージョンをインストールする必要がでてきた。

方針

検索してみると、こちらのFVMがよさそうなので導入する。
ただし、MAC系の情報ばかりなので、こちらに記載していく。

結構、四苦八苦してしまいました。

インストール

インストールの方法は2種類。
DartのSDKがインストールされていて、そちら経由で入れるか単独で入れるか?という感じ。

image.png

すでに開発をされている場合は、dartのsdkがインストール済みなので、1の方法でインストールする。私もインストール済みなので、こちらで進めます。

dart SDK 経由でインストールする

E:\dev>dart pub global activate fvm
Package fvm is currently active at version 1.3.7.
Resolving dependencies...
+ args 1.6.0 (2.1.1 available)
+ charcode 1.1.3 (1.3.1 available)
+ checked_yaml 1.0.4 (2.0.1 available)
+ cli_dialog 0.4.0 (0.5.0 available)
+ cli_util 0.2.0 (0.3.3 available)
+ collection 1.14.13 (1.15.0 available)
+ console 3.1.0 (4.1.0 available)
+ dart_console 0.6.2 (1.0.0 available)
+ date_format 1.0.9 (2.0.2 available)
+ ffi 0.1.3 (1.1.2 available)
+ freezed_annotation 0.12.0 (0.14.2 available)
+ functional_data 0.3.0 (1.0.0 available)
+ fvm 1.3.7 (2.2.2 available)
+ http 0.12.2 (0.13.3 available)
+ http_parser 3.1.4 (4.0.0 available)
+ io 0.3.5 (1.0.3 available)
+ json2yaml 1.0.1+1 (2.0.0 available)
+ json_annotation 3.1.1 (4.0.1 available)
+ meta 1.2.4 (1.7.0 available)
+ path 1.7.0 (1.8.0 available)
+ pedantic 1.9.2 (1.11.1 available)
+ plain_optional 0.1.3 (1.0.0 available)
+ pretty_json 1.1.0 (2.0.0 available)
+ process_run 0.11.2+8 (0.12.1+1 available)
+ pub_api_client 1.0.9 (2.0.5 available)
+ pub_semver 1.4.4 (2.0.0 available)
+ pubspec_parse 0.1.8 (1.0.0 available)
+ pubspec_yaml 2.0.1+1
+ source_span 1.7.0 (1.8.1 available)
+ string_scanner 1.0.5 (1.1.0 available)
+ sum_types 0.2.1+2 (0.3.0 available)
+ synchronized 2.2.0+2 (3.0.0 available)
+ term_glyph 1.1.0 (1.2.0 available)
+ typed_data 1.2.0 (1.3.0 available)
+ vector_math 2.0.8 (2.1.0 available)
+ version 1.3.1 (2.0.0 available)
+ win32 1.7.4+1 (2.2.5 available)
+ yaml 2.2.1 (3.1.0 available)
Precompiling executables...
Precompiled fvm:main.
Installed executable fvm.
Warning: Pub installs executables into C:\Users\xxxx\AppData\Local\Pub\Cache\bin, which is not on your path.
You can fix that by adding that directory to your system's "Path" environment variable.
A web search for "configure windows path" will show you how.
Activated fvm 1.3.7.

最後の3行に、warningででていますが、自分で環境変数に追加する必要があります。

左下のWindowsのマークでマウスを右クリックして、コンテキストメニューが表示されるので、システムを選択します。

image.png

以下の画面が表示されますので、システムの詳細設定をクリックします。

image.png

システムのプロパティが表示されるので、環境変数をクリックします。

image.png

システム環境変数のpathをクリックして、その下の編集をクリックします。

image.png

image.png

以下のように追記します。

image.png

これでパスを通して、cmdを起動してバージョン情報が表示されるか確認します。

fvm --version

image.png

とすると画面が閉じちゃいます(汗)

原因を追求する時間も惜しいので、立ち戻って、2のスタンドアロンインストールを行います。

スタンドアロン インストール

スタンドアロンインストールを見ていくと、図中1のwindowsの場合に目が惹かれます。
流れにのって、図中2のコマンドを入力してみますがうまくいきません。

英語が苦手でグレーで見えづらく書かれていて視界に入らないようにしていましたが、こちらは、他のパッケージマネージャを使う場合の方法です。

なので、chocoというパッケージマネージャを使わないと使えません。

image.png

図中3のGithubからダウンロードします。

現在は、fvm 2.2.2が最新バージョンです。私はWindows10の64ビットなので、図中の赤矢印のバージョンをダウンロードします。

image.png

私はダウンロードして自分でインストールするソフトは、c:\tools\xxxとしてインストールる方針にしています。
Cドライブがいっぱいに近いので、今回は空き容量が多いe:\tools\fvmにZIP展開しておきます。

image.png

cmdを起動して、バージョン確認をしてみます。さきほどのように画面が閉じるということなく、バージョンが表示されました。

image.png

すぐに使えるように、さきほどのシステム環境変数の設定を行います。

image.png

これでどこからでも呼び出せるようになりました。

image.png

dart pub でインストールしたfvmの削除

Android Studioでfvmを実行すると、画面が閉じてしまいます。
dartでインストールしたバージョンが悪さをしているようです。

このためdartでインストールしたバージョンを削除します。

dart pub global deactivate fvm

image.png

これでスタンドアロンでインストールしたバージョンを参照するようになりました。

Flutterをインストールする

現在の開発に使っているFlutterのバージョンを確認する

flutter --version

image.png

1.22.5を使っているのでこちらをインストールする。

E:\dev>fvm install 1.22.5
Flutter "1.22.5" is not installed.

Installing version: 1.22.5...
Cloning into 'C:\Users\xxxx\fvm\versions\1.22.5'...
remote: Enumerating objects: 325753, done.
remote: Counting objects: 100% (148/148), done.
remote: Compressing objects: 100% (68/68), done.
remote: Total 325753 (delta 68), reused 120 (delta 56), pack-reused 325605
Receiving objects: 100% (325753/325753), 153.77 MiB | 6.79 MiB/s, done.
Resolving deltas: 100% (252558/252558), done.
Updating files: 100% (5159/5159), done.
Updating files: 100% (3781/3781), done.
HEAD is now at 7891006299 Stable 1.22.5 cherrypicks - engine revert (#72079)

Could not install 1.22.5

Please run command with  --verbose if you want more information

失敗しました。
「詳細情報を表示させて原因を特定してね」ってことなので、詳細表示をしてみます。

E:\dev>fvm install 1.22.5 --verbose
[     0.023s] FileSystemException: Cannot open file, path = 'C:\Users\xxx\fvm\.settings' (OS Error: 指定されたファイルが見つかりません。
, errno = 2)
[     0.037s] FileSystemException: Cannot open file, path = 'C:\Users\xxx\fvm\.settings' (OS Error: 指定されたファイルが見つかりません。
, errno = 2)
[     0.038s] FileSystemException: Cannot open file, path = 'C:\Users\xxx\fvm\.settings' (OS Error: 指定されたファイルが見つかりません。
, errno = 2)
[     0.041s] Version: 1.22.5 - already installed.
[     0.085s] FileSystemException: Cannot open file, path = 'C:\Users\xxx\fvm\.settings' (OS Error: 指定されたファイルが見つかりません。
, errno = 2)
[     0.091s] FileSystemException: Cannot create link to target 'C:\Users\xxx\fvm\versions\2.2.3', path = 'E:\dev\.fvm\flutter_sdk' (OS Error: クライアントは要求された特権を保有していません。
, errno = 1314)
[     0.092s] Usage Exception: Seems you don't have the required permissions on C:\Users\xxx\fvm On Windows FVM requires to run as an administrator or turn on developer mode: https://bit.ly/3vxRr2M

Could not install 1.22.5

Please run command with  --verbose if you want more information

Qiitaの仕様上、横スクロールをしないと見れないですが、抜粋すると以下になります。
リンクを貼るのは管理者権限なので、管理者権限のコマンドラインで実行します。

Windowsのあるあるですね。

Usage Exception: Seems you don't have the required permissions on C:\Users\xxx\fvm On Windows FVM requires to run as an administrator or turn on developer mode: https://bit.ly/3vxRr2M

管理者権限で実行すると、きちんとリンクが貼れました。

image.png

ただし、Android Studioで、FlutterのSDKを設定しようとすると、指定ができません。

シンボリックリンクは、CドライブからEドライブにドライブをまたげないので、ドライブを揃えてみます。

こんな感じでSDKのキャッシュの保存先を変更します。

E:\dev>fvm config --cache-path "E:\dev\flutter\versions"
Settings saved.


E:\dev>fvm config

FVM Settings:
Located at C:\Users\xxx\fvm\.settings

cachePath: E:\dev\flutter\versions
skipSetup: false
gitCache: false

シンボリックリンクも確かに貼れました。

image.png

こちらの設定をして Android StudioのFlutterのSDKを指定するのですが、ソースコード直下の.fvm/flutter_sdkを指定することができません。

image.png

image.png

結局、キャッシュフォルダを直接指定に変更しました。

image.png

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5