Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Flutterの開発環境(Windows + Android Studio)を構築する

More than 1 year has passed since last update.

概要

Windows PC上にFlutterの開発環境を構築したときのメモになります。

環境

  • Windows 10 Professional 1903
  • Flutter SDK 1.9.1
  • Android Studio 3.5.1

参考

Android Emulatorのハードウェアアクセラレーション

Android Emulator のハードウェア アクセラレーションを設定する』を参考にハードウェアアクセラレーションの設定を行います。
これはハードウェアに依存するので、下記の設定が必要かどうかは開発PCにより変わります。

Windows で VM アクセラレーションを設定する

Windows 上の VM アクセラレーションでは、Intel Hardware Accelerated Execution Manager(HAXM)か Windows Hypervisor Platform(WHPX)のいずれかのハイパーバイザを使用できます。

上記に引用したとおり、WindowsではHAXMとWHPXの2種類のハイパーバイザがあり、私が使用している開発PCではWHPXは使えなかったためHAXMを使うことにしました。以降はHAXMを使うための設定になります。

Intel CPU VT-xの確認

使用しているPCのCPUがIntel製の場合、CPUがVT-x (Intel Virtualization Technology)に対応しているか『使用中のプロセッサーはインテル? バーチャライゼーション・テクノロジーに対応していますか?』というIntelのサイトで調べることができます。(最近のIntel CPUではほぼ対応しているようです。)

対応している場合でもBIOS上で無効になっていることがあるようなので、BIOSセットアップ画面で有効になっていることを確認します。
確認できたらWindows起動後にVirtualCheckerというツールで改めて確認します。
下図は私のPCの状態です。(後述のHyper-Vが有効になっているとEnabledにならないため、Hyper-Vを無効にした後の図です。)

virtualchecker.png

VT-xとは

インテル バーチャライゼーション・テクノロジー - Wikipedia
インテル バーチャライゼーション・テクノロジー(Intel Virtualization Technology、Intel VTまたは単にVTと略される)とは、インテルによって開発された仮想化支援技術のことである。

VT-x は、Intelによるx86仮想化の実装例である。単に Intel VT と呼称する場合もある。

Hyper-Vの無効化

WindowsのVMアクセラレーションでHAXMを利用する場合、Hyper-Vを無効化する必要があるため、以下の手順でHyper-Vを無効化します。

コントロールパネルを開き → プログラムプログラムと機能Windowsの機能の有効化または無効化Hyper-Vのチェックを外します。
Hyper-V.png

また、Windows ハイパーバイザー プラットフォーム(WHPX)が有効化されている場合、これも無効化します。
hypervisor-platform.png

設定を変えたらWindowsを再起動します。
なお、アプリケーションの動作確認に実機を利用する場合はとくに気にする必要はないようです。

Flutterのインストール

Windows install

System requirements

  • Tools: Flutter depends on these tools being available in your environment.
    • Windows PowerShell 5.0 or newer (this is pre-installed with Windows 10)
    • Git for Windows 2.x, with the Use Git from the Windows Command Prompt option.

上記に引用したとおり要件としてPowerShell 5.0以上、およびGit for Windows 2.xが必要なのでインストール(されていなければ)します。(インストール方法は割愛します)

PowerShell

PS> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      6.2.2
PSEdition                      Core
GitCommitId                    6.2.2
OS                             Microsoft Windows 10.0.18362
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Git for Windows

PS> git --version
git version 2.22.0.windows.1

Flutter SDK

Flutter SDK releasesよりWindows版の最新リリース(この時点ではv1.9.1+hotfix.4)のzipファイルをダウンロードし適当なディレクトリに展開します。
なお、下記に引用したように管理者権限の必要なディレクトリへは展開してはいけないということです。

do not install Flutter in a directory like C:\Program Files\ that requires elevated privileges).

この記事では下記のディレクトリへ展開し、D:\flutter\binを環境変数PATHに通しました。

D:\flutter

flutter doctorの実行

この時点でflutter doctorを実行してFlutterの開発環境の状態を確認します。X!の箇所が問題が指摘されているの項目です。この後解決していきます。

PS> flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[] Flutter (Channel stable, v1.9.1+hotfix.4, on Microsoft Windows [Version 10.0.18362.418], locale ja-JP)
[X] Android toolchain - develop for Android devices
    X Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/setup/#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_HOME to that location.
      You may also want to add it to your PATH environment variable.

[!] Android Studio (not installed)
[!] IntelliJ IDEA Ultimate Edition (version 2019.2)
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
[] VS Code, 64-bit edition (version 1.39.0)
[!] Connected device
    ! No devices available

! Doctor found issues in 4 categories.

JDK 1.8

開発には不要ですが後述するAndroidライセンスに同意する操作でJDK 1.8が必要になるので事前にインストールし、且つbinディレクトリを環境変数PATHに通しておきます。

なお、Android Studioで開発する分にはJDK 1.8は不要なようなので「Androidライセンスに同意する操作」のときだけ環境変数PATHを書き換えています。

Android Studioのインストール

Download Android Studio and SDK Toolsよりインストーラ(このときはandroid-studio-ide-191.5900203-windows.exeというファイル)をダウンロードしてインストールします。

Android Studio

インストーラを実行してインストールします。
インストールが完了するとAndroid Studio Setup Wizardという画面が立ち上がります。
07.png

設定は以下の内容で行いました。

Install Typeはcustomを選択しました。(インストール先を変えるため)
08.png

UIテーマはダークモードにしました。
09.png

Android SDK Locationは図の場所(D:\dev\Android\Sdk)に設定しました。
また、Android SDK Locationを環境変数ANDROID_HOMEに登録します。

ANDROID_HOME=D:\dev\Android\Sdk

10.png

エミュレータが使用できるメモリ量を設定します。
※この設定はすでに廃止されていて意味がないそうです
11.png

Finishボタンをクリックして設定を開始します。
12.png

設定が完了したらFinishボタンをクリックします。
13.png

Android Studioが立ち上がりWelcome画面が表示されます。次は右下のConfigureから設定を行います。
14.png

Android SDKの確認

Welcome画面ConfigureSDK Manager

SDK Managerでは特に設定する項目はありませんが、設定内容に一通り確認しておきます。

SDK Platforms
15.png

SDK Tools
この画面でツールのインストール・アンインストールが行えます。
16.png

HAXMの確認

Android Studioをインストールすると同時にIntel HAXMがインストールされます。インストールが成功しているか以下のコマンドで確認することができます。

PS> cd D:\dev\Android\Sdk
PS> .\emulator\emulator.exe -accel-check
Warning: Quick Boot / Snapshots not supported on this machine. A CPU with EPT + UG features is currently needed. We will address this in a future release.
accel:
0
HAXM version 7.5.2 (4) is installed and usable.
accel

STATEが4 RUNNINGとなっていればHAXMプロセッサが実行されています。

PS> sc query intelhaxm

SERVICE_NAME: intelhaxm
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

なお、アンインストールするときはAndroid Studioとは別に行います。
haxm.png

Flutter, Dartプラグイン

Welcome画面ConfigurePlugins

FlutterのInstallボタンをクリックしてFlutterプラグインをインストールします。
17.png

途中でDartプラグインをインストールするか聞かれるのでYesボタンをクリックしてインストールします。
19.png

Androidエミュレータの設定

Welcome画面ConfigureAVD Manager

Android Virtual Device Managerが立ち上がるので✚ Create Virtual Device...をクリックします。
avd_01.png

Select Hardwareでデバイスを選択します。ここではPixel 3を選択しました。
avd_02.png

System Imageを選択します。ここではQ、API Level 29、Target Android 10.0DownloadリンクをクリックしてSystem Imageをダウンロードします。
avd_03.png

License AgreementでAcceptにチェックを入れ、Nextボタンをクリックします。
avd_04.png

インストールが始まります。(しばらくかかります)
avd_05.png

ダウンロードが完了したらFinishボタンをクリックして前の画面に戻ります。
avd_06.png

System Imageの画面に戻ったらNextボタンをクリックします。
avd_07.png

ここで細かい設定が可能ですが、今回はこのままFinishボタンをクリックして完了します。
avd_08.png

設定が完了すると図の画面になります。試しにActions欄の右向き三角アイコンをクリックしてエミュレータを起動します。
avd_09.png

Androidエミュレータが立ち上がった状態です。終了するときは右側に表示されてる縦長のメニューバーの×マークをクリックします。
avd_10.png

以上でAndroidエミュレータの設定は完了です。

Androidライセンスの同意

Androidエミュレータを新規・追加でインストールした後は、以下のコマンドでAndroidライセンス
に同意する操作を行います。
途中で何回かy/nを入力する場面がありますがライセンスに同意する場合はyを入力します。

PS> flutter doctor --android-licenses

なお、JDK 9以上では下記のように失敗します。

PS> flutter doctor --android-licenses
A newer version of the Android SDK is required. To update, run:
D:\dev\Android\Sdk\tools\bin\sdkmanager --update
PS> D:\dev\Android\Sdk\tools\bin\sdkmanager --update
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
        at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
        at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
        at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 5 more

flutter doctorの実行

先ほどflutter doctorを実行したときに指摘された問題が解決できたか再度実行します。

PS> flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[] Flutter (Channel stable, v1.9.1+hotfix.4, on Microsoft Windows [Version 10.0.18362.418], locale ja-JP)

[] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[] Android Studio (version 3.5)
[!] IntelliJ IDEA Ultimate Edition (version 2019.2)
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
[] VS Code, 64-bit edition (version 1.39.0)
[!] Connected device
    ! No devices available

! Doctor found issues in 2 categories.

IntelliJ IDEAとConnected deviceに!マークが付いていますが、IntelliJ IDEAは使用しないので無視します。
Connected deviceは、コマンド実行時にエミュレータを含むデバイスが繋がっていなければこのように表示されるので問題ありません。

ちなみにエミュレータを起動した状態でコマンドを実行すると下記のように表示されます。

[√] Connected device (1 available)

デモアプリケーションの実行

Android Studioを起動しWelcome画面のStart a new Flutter projectをクリックします。
fp_01.png

Flutter Applicationをクリックします。
fp_02.png

Flutter SDK pathが空欄なので、先ほどインストールしたFlutter SDKのディレクトリを選択します。
fp_03.png

ここはそのままでFinishボタンをクリックします。
fp_04.png

開発画面です。デモコードがありますがそのままでアプリケーションを実行してみます。
fp_05.png

デバイスを選択します。(先ほど登録したAndroidエミュレータです)
リストからOpen Android Emulator: Pixel 3 API 29を選択するとAndroidエミュレータの起動が始まります。
fp_06.png

Androidエミュレータが起動すると<no devices>Android SDK build for x86 (mobile)に変わります。
右側にある右向きの三角アイコンをクリックしてアプリケーションを実行します。
fp_07.png

Androidエミュレータ上でデモアプリケーションを実行した様子です。
右下のプラスアイコンをクリックするたびに中央の数値がインクリメントされます。
fp_08.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away