/ FLUTTER

flutter doctor --android-licenses 문제 해결하기

안드로이드 SDK 사용 동의가 제대로 되지 않은 경우, flutter doctor를 실행하면 다음과 같이 에러 메시지가 표시됩니다.

$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.1, on macOS 11.4 20F71 darwin-x64, locale
    en)
[!] Android toolchain - develop for Android devices (Android SDK version
    30.0.3)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup
      for more details.
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] VS Code (version 1.56.2)
[✓] Connected device (1 available)

이 문제는 안드로이드 스튜디오를 새로 설치했을 때 종종 발생합니다. 이 때, flutter doctor --android-license 명령을 실행하면 문제를 해결할 수 있습니다.

그런데, 간혹 이 과정에서 다음과 같이 java.lang.NoClassDefFoundError 오류가 발생하기도 합니다.

➜  ~ 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:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 5 more

이 문제는 안드로이드 SDK 구성요소 중 안드로이드 SDK 커맨드라인 도구 (Android SDK Command-line Tools)가 설치되어 있지 않을때 발생합니다.

문제를 해결하려면 안드로이드 스튜디오에서 SDK Manager를 실행한 후, SDK Tools 탭에서 Android SDK Command-line Tools를 설치하면 됩니다.

커맨드라인 도구를 설치한 후, flutter doctor --android-licenses 명령을 다시 실행하면 다음과 같이 정상적으로 명령이 실행되는 것을 볼 수 있습니다.

$ flutter doctor --android-licenses
Loading local repository...          
5 of 7 SDK package licenses not accepted.
Review licenses that have not been accepted (y/N)?

...(생략)...

Accept? (y/N): y
All SDK package licenses accepted

flutter doctor를 통해 모두 정상 상태로 돌아간 것을 확인할 수 있습니다.

$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.1, on macOS 11.4 20F71 darwin-x64, locale
    en)
[✓] Android toolchain - develop for Android devices (Android SDK version
    30.0.3)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] VS Code (version 1.56.2)
[✓] Connected device (1 available)

• No issues found!
kunny

커니

안드로이드와 오픈소스, 코틀린(Kotlin)에 관심이 많습니다. 한국 GDG 안드로이드 운영자 및 GDE 안드로이드로 활동했으며, 현재 구글에서 애드몹 기술 지원을 담당하고 있습니다.

Read More