Flutter 개발환경 설정 (with Flutter Doctor)

달피·2021년 7월 20일
0
post-thumbnail

간단한 아이디어를 앱으로 만들고 싶었는데 android 말고 ios에서도 돌려보고 싶어서 크로스 플랫폼 개발 환경을 사용해보기로 하였다. 여러 선택지가 있었지만 Flutter가 기존 android studio에서도 개발 가능하기 때문에 제일 쉬워 보였다.
일단, Android Developers 와 같이 Flutter도 부분적으로 한국어 문서가 지원되며 설치 문서에도 번역이 되어 있다.
하지만 역시 개발 환경 설정은 뭐가 되었든 쉽지많은 않는 것 같다. Windows 에서 설치하면서 겪은 문제들을 쭉 나열해 보면 이렇다.

Flutter Doctor

콘솔에서 Flutter 설치 상태에 대해 알려주고 필요한 항목들을 알려주는 tool이다.
Android 개발 환경은 이미 가지고 있었지만 처음 doctor를 실행했을 때 아래처럼 ! 가 많이 보인다

PS C:\flutter_windows_2.0.6-stable\flutter> flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 2.0.6, on Microsoft Windows [Version 10.0.19041.985], locale ko-KR)
[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
[√] Chrome - develop for the web
[!] Android Studio (not installed)
[√] IntelliJ IDEA Community Edition (version 2019.3)
[√] Connected device (2 available)

Android licenses 동의 시 NoClassDefFoundError 문제

Android toolchain 을 보면 Flutter 에서 Android 사용을 위한 라이선스에 동의가 필요하다. 가이드 받은대로 입력해줬는데 java의 NoClassDefFoundError 에러가 발생한다.

PS C:\flutter_windows_2.0.6-stable\flutter> flutter doctor --android-licenses
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:602)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 5 more

현재 java 버전을 보니

PS C:\flutter_windows_2.0.6-stable\flutter> java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) Client VM (build 25.241-b07, mixed mode)

최신의 자바를 깔면 해결된다는 블로그 글이 있어 바꾸는 김에 OpenJDK를 사용해보기로 했다.
openjdk8 - https://github.com/ojdkbuild/ojdkbuild

PS C:\flutter_windows_2.0.6-stable\flutter> java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK Server VM (build 25.292-b10, mixed mode)

새로 설치하니 거짓말처럼 해결되었고 이후 무수한 약관 동의 과정이 진행되었다.

Android Studio & Android SDK 설치 경로 문제

사용하던 Android Studio가 있는데 찾지 못한 것으로 기본 설치 경로를 수정해주면 된다.
(Android Studio 설치 시 설치 경로를 C:\Android\ 로 바꿨었다. 기본 경로는 Program Files\ 인 것으로 보임)

PS C:\flutter_windows_2.0.6-stable\flutter> flutter config --android-studio-dir="C:\Android\Android Studio"
Setting "android-studio-dir" value to "C:\Android\Android Studio".

이후 다시 doctor를 실행시키면 license 가 다시 ! 로 되어 있었다.

PS C:\flutter_windows_2.0.6-stable\flutter> flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[] Flutter (Channel stable, 2.0.6, on Microsoft Windows [Version 10.0.19041.985], locale ko-KR)
[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
[] Chrome - develop for the web
[] Android Studio
[] IntelliJ IDEA Community Edition (version 2019.3)
[] Connected device (2 available)

가볍게 다시 flutter doctor --android-licenses 를 입력해 봤더니

PS C:\flutter_windows_2.0.6-stable\flutter> flutter doctor --android-licenses
��: ⺻ Ŭ Kim\AppData\Local\Android\Sdk\cmdline-tools\latest\bin\\..��() ãų ε  ��ϴ.
: java.lang.ClassNotFoundException: Kim\AppData\Local\Android\Sdk\cmdline-tools\latest\bin\\//

깨진 글자들과 함께 ClassNotFoundException 에러가 발생한다.
자세히 보니 내 Windows 의 user folder 에 공백 문자가 있어서 발생하는 것 같아 보인다.
Android SDK의 위치는 Android Studio에서 찾아볼 수 있는데
문제가 없을 것 같은 C:\Android\Sdk 로 옮기고 다시 자세한 설명이 나오도록 doctor -v 옵션으로 실행해보았다.
하지만 아직도 이전 경로인 것으로 나온다.

PS C:\flutter_windows_2.0.6-stable\flutter> flutter doctor -v
//...
[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/docs/get-started/install/windows#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.
//...

Android Studio 에서의 경로 뿐 아니라 Flutter에서 사용하는 Android SDK 경로를 다시 지정해주어야 했었다.
flutter config --android-sdk "C:\Android\Sdk" 로 경로를 다시 지정해준다.

Dart & Flutter plugin 설치

이후 Dart 와 Flutter plugin 을 설치해 주어야 한다
doctor에 -v 옵션을 주고 실행시키면 plugin에 대한 설명도 나오지만
Android Studio를 켜고 gui 환경에서 설치할 수 있다.
(첫 화면 하단의) Configure - Plugins


완료!

모든 과정을 완료하고 doctor 를 실행하면 모든 항목이 clear 되어 있다. 속이 다 시원하다.

PS C:\flutter_windows_2.0.6-stable\flutter> flutter doctor -v
[√] Flutter (Channel stable, 2.0.6, on Microsoft Windows [Version 10.0.19041.985], locale ko-KR)
    • Flutter version 2.0.6 at C:\flutter_windows_2.0.6-stable\flutter
    • Framework revision 1d9032c7e1 (3 weeks ago), 2021-04-29 17:37:58 -0700
    • Engine revision 05e680e202
    • Dart version 2.12.3
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Android\Sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: C:\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
    • All Android licenses accepted.
[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
[√] Android Studio
    • Android Studio at C:\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • android-studio-dir = C:\Android\Android Studio
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
[√] IntelliJ IDEA Community Edition (version 2019.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.3
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
[√] Connected device (2 available)
    • Chrome (web) • chrome • web-javascript • Google Chrome 90.0.4430.212
    • Edge (web)   • edge   • web-javascript • Microsoft Edge 90.0.818.62
• No issues found!
profile
개발 오답노트

0개의 댓글