おけらのブログ++

駆け出しWebエンジニアの奮闘記

【Vol.1】Flutter入門〜環境構築編〜

f:id:Okerra:20191115210457p:plain

目次

  1. Flutterとは
  2. MacにFlutterをインストール
  3. Android 開発環境の準備
  4. iOS 開発環境の準備
  5. Flutterサンプルアプリの実行
  6. エラーの対処方法

Flutterを使ってみる

春にWebエンジニアデビューをしてから約半年が経ちました。

そしてひょんなことからFlutterを勉強してみることになりました!

調べてみるとFlutter For Webがででているようなので、数年後はもしかするとWebの世界でも流行っているかもしれないので今のうちに勉強していても損はないはず!

そんなこんなで今回はFlutterの第1回目の投稿となります!

開発環境

  • OS: MacOS Mojave 10.14.6
  • Flutter:  1.9.1

1. Flutterとは

最近のアプリ開発ではほとんどがAndroidiOSの両方でリリースをすることが多いと思います。

その場合、フレームワークや開発方法は大きく違うため開発には大きなコストが必要となります。

しかしFlutterはクロスプラットフォームと呼ばれ、同じコードで両方のOSに対応したアプリ開発ができるためかなりの効率化が期待できます。

今回はFlutterでの開発に必要な環境構築と実際にクロスプラットフォームを体感するために、デフォルトのサンプルアプリを起動してAndroidiOSのどちらでも動作できることを確認していきます。

2. MacにFlutterをインストール

まずは公式ページからFlutter本体をインストールします。

MacOSをクリックします。

f:id:Okerra:20191115225130p:plain

最新のFlutter SDKをダウンロードしてください。

f:id:Okerra:20191115224939p:plain

ダウンロードが完了したら、適当な場所で展開します。

私の場合は今回はホームディレクトリにdevelopmentというフォルダを作ります。

$ mkdir ~/development
$ cd ~/development

ダウンロードしたSDKを先ほど作ったフォルダに移動して解凍します。

$ mv ~/Downloads/flutter_macos_v1.9.1+hotfix.6-stable.zip ./
$ unzip ./flutter_macos_v1.9.1+hotfix.6-stable.zip

Flutterコマンドを使えるように解凍したフォルダのパス/flutter/binPATHを通します。

export PATH="$PATH:/Users/username/development/flutter/bin"

試しにFlutterのバージョンを表示してみましょう!

$ flutter --version
Flutter 1.9.1+hotfix.6 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 68587a0916 (9 weeks ago) • 2019-09-13 19:46:58 -0700
Engine • revision b863200c37
Tools • Dart 2.5.0

これで最初の第一歩、Flutterのインストールが完了しました!

ついでに~/.bashrc等にFlutterコマンドのaliasも設定しておきましょう!

alias fl='flutter'

3. Android 開発環境の準備

Flutterをインストールしたら、次はAndroid Studioをインストールしていきます。

Android StudioAndroidアプリの統合開発環境のことです。

もし既にインストールされている方は、Flutterのプラグインをインストールする所までスキップしてください。

Android Studioのインストール

まずは公式ページにいってダウンロードしましょう!

f:id:Okerra:20191115233527p:plain

ダウンロードが完了したらdmgファイルを開いてApplicationフォルダにドラッグ&ドロップします。

f:id:Okerra:20191115234036p:plain

Android StudioにFlutterプラグインのインストール

インストールしたら、まずはAndroid Studioを起動しましょう。

起動したら右下のConfigureからPlugginを選択します。

f:id:Okerra:20191115235241p:plain

ここでFlutterを検索してインストールします(画像は既にインストールしてしまってます)

f:id:Okerra:20191115235649p:plain

ちょっと一休み 〜 Flutter doctorで診断する

ここで一度Flutter doctorというコマンドを紹介します!

flutter doctorとはFlutterに関連するセットアップが完了しているかチェックをしてくれます。

もしNGだった場合は必要なコマンドなども表示してくれるため非常に優しい仕様になってます。

ぜひ一度チェックしてみてください!

$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.9.1+hotfix.6, on Mac OS X 10.14.6 18G103, locale ja-JP)

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    ✗ Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[!] Xcode - develop for iOS and macOS (Xcode 11.2.1)
    ✗ Xcode requires additional components to be installed in order to run.
      Launch Xcode and install additional required components when prompted.
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart
        side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install:
        sudo gem install cocoapods
[✓] Android Studio (version 3.5)
[!] VS Code (version 1.39.2)
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[!] Connected device
    ! No devices available

例えば [!] VS Code (version 1.39.2) というのがNGになっていますが、VSCodeからFlutterのプラグインをインストールするとOKになりました!

f:id:Okerra:20191116233713p:plain

Androidエミュレーターの設定

さぁいよいよAndroid環境の設定はこれで最後となります。

まずはエミュレーター(Virtual Device)をコマンドラインから作成します。(最後のAndroidは任意の命名)

$ flutter emulator --create --name Android
Emulator 'Android' created successfully.

もしここでエラーが出た場合は対処方法を最後に書いていますのでそちらを確認してみてください。

ここまで上手くいったら最後にエミュレーターを起動してみましょう。

$ flutter emulator --launch Android

このようにAndroidエミュレーターが表示されれば成功です!

f:id:Okerra:20191116102823p:plain

4. iOS 開発環境の準備

まずはXcodeをインストールしましょう。

ただXcodeMacであれば大体は入っているかと思いますので、説明は省きます。

FlutterはXcode9.0以上である必要がありますのでご注意ください。

次にXcodeの設定変更をします。

$ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

そしてライセンスの同意を行います。

$ sudo xcodebuild -license

最後にAndroidと同様にiOSエミュレーターを起動してみます。

$ open -a Simulator
$ flutter emulator --launch apple_ios_simulator

この通り、iOSエミュレーターが表示されれば無事成功です!

f:id:Okerra:20191116102509p:plain

お疲れ様です。これでAndroidiOSのFlutter環境構築が完了しました。

環境構築だけであればここで終わりとなりますが、せっかくなのでFlutterのサンプルアプリをビルドして、AndroidiOSのどちらもサンプルアプリが動くことまで体感してみます。

5. Flutterサンプルアプリの実行

Windowsの方もいるかと思いますのでAndroid Studioをつかっていきます。

とても簡単なのであとちょっと頑張ってください!

まずはAndroid Studioを起動し、[Start a new Flutter project]を押してください。

f:id:Okerra:20191116105204p:plain

[Flutter Application] -> [Next]を選択します。

f:id:Okerra:20191116105307p:plain

次にプロジェクト名等を入力してください。[flutter_first_appp]など。

今回はそれ以外は変更する必要はありません。最後に [Next] を押します。

f:id:Okerra:20191116105642p:plain

そしてパッケージ名に利用するCompanyDomainを設定します。

パッケージ名はユニークである必要がありますが、ここではサンプルなのでそのままにします。

f:id:Okerra:20191116110218p:plain

ここまで完了したらこのようなプロジェクト画面が開くはずです。

f:id:Okerra:20191116185913p:plain

ではサンプルアプリをビルドしてみましょう!!

Androidであれば右上をAndroidを選択してRunボタンを! f:id:Okerra:20191116190453p:plain

iOSであればいiPhoneを選択してRunボタンを! f:id:Okerra:20191116191134p:plain

そうすればこのようにそれぞれのエミュレーターが起動することを確認できました!!

f:id:Okerra:20191116191442p:plain

さいごに

はじめてのFlutterでしたが、とても簡単に構築することができました。

今回はサンプルアプリを実行しただけですが、次からはもう少し踏み込んだ内容をまとめたいと思います。

連載できるように頑張ります!!!

エラー対処

Failed to create emulator ***

$ flutter emulator --create --name Android
Failed to create emulator Android'.

No suitable Android AVD system images are available. You may need to install these using sdkmanager, for example:
  sdkmanager "system-images;android-27;google_apis_playstore;x86"

You can find more information on managing emulators at the links below:
  https://developer.android.com/studio/run/managing-avds
  https://developer.android.com/studio/command-line/avdmanager

この場合はエラー内で表示されているように下記コマンドを打ってください。

$ sdkmanager "system-images;android-27;google_apis_playstore;x86"
sdkmanager: command not found

私の場合、さらにsdkamanagerのパスが通ってないようでエラーとなりました。

sdkmanagerは/Users/username/Library/Android/sdk/tools/binに実態がありますのでパスを通します。

# Android Studio
export ANDROID_HOME=~/Library/Android;
export ANDROID_SDK_ROOT=$ANDROID_HOME/sdk;
export PATH=$ANDROID_SDK_ROOT/tools/bin:$PATH;

NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema

これがでたらJava8系が入っていないようです。

そのためOracleのページからJava8のJDKをインストールしましょう!(JREではないです!)

f:id:Okerra:20191116195732p:plain

もし別のJavaが入っているならこの辺りを参考にすれば良いと思います!