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!