#課題
WindowsでFlutterを使っていて、SDKの違うバージョンをインストールする必要がでてきた。
方針
検索してみると、こちらのFVM
がよさそうなので導入する。
ただし、MAC系の情報ばかりなので、こちらに記載していく。
結構、四苦八苦してしまいました。
インストール
インストールの方法は2種類。
DartのSDKがインストールされていて、そちら経由で入れるか単独で入れるか?という感じ。
すでに開発をされている場合は、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のマークでマウスを右クリックして、コンテキストメニュー
が表示されるので、システム
を選択します。
以下の画面が表示されますので、システムの詳細設定
をクリックします。
システムのプロパティ
が表示されるので、環境変数
をクリックします。
システム環境変数のpath
をクリックして、その下の編集
をクリックします。
以下のように追記します。
これでパスを通して、cmd
を起動してバージョン情報が表示されるか確認します。
fvm --version
とすると画面が閉じちゃいます(汗)
原因を追求する時間も惜しいので、立ち戻って、2のスタンドアロンインストールを行います。
スタンドアロン インストール
スタンドアロンインストールを見ていくと、図中1のwindows
の場合に目が惹かれます。
流れにのって、図中2のコマンドを入力してみますがうまくいきません。
英語が苦手でグレーで見えづらく書かれていて視界に入らないようにしていましたが、こちらは、他のパッケージマネージャを使う場合
の方法です。
なので、choco
というパッケージマネージャを使わないと使えません。
図中3のGithubからダウンロードします。
現在は、fvm 2.2.2が最新バージョンです。私はWindows10の64ビットなので、図中の赤矢印のバージョンをダウンロードします。
私はダウンロードして自分でインストールするソフトは、c:\tools\xxx
としてインストールる方針にしています。
Cドライブがいっぱいに近いので、今回は空き容量が多いe:\tools\fvm
にZIP展開しておきます。
cmdを起動して、バージョン確認をしてみます。さきほどのように画面が閉じるということなく、バージョンが表示されました。
すぐに使えるように、さきほどのシステム環境変数の設定を行います。
これでどこからでも呼び出せるようになりました。
dart pub でインストールしたfvmの削除
Android Studioでfvm
を実行すると、画面が閉じてしまいます。
dartでインストールしたバージョンが悪さをしているようです。
このためdartでインストールしたバージョンを削除します。
dart pub global deactivate fvm
これでスタンドアロンでインストールしたバージョンを参照するようになりました。
Flutterをインストールする
現在の開発に使っているFlutterのバージョンを確認する
flutter --version
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
管理者権限で実行すると、きちんとリンクが貼れました。
ただし、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
シンボリックリンクも確かに貼れました。
こちらの設定をして Android StudioのFlutterのSDKを指定するのですが、ソースコード直下の.fvm/flutter_sdk
を指定することができません。
結局、キャッシュフォルダを直接指定に変更しました。