플러터(Flutter) 환경을 재구축하고 flutter doctor 명령으로 설치 상태를 확인하니 Android license status unknown 오류가 발생했다.
기존에는 flutter doctor --android-licenses 명령으로 Android SDK 라이선스를 적용하면 해결되었던 문제인데, 이번에는 같은 방법으로 해결되지 않았다.
이번 글에서는 Flutter 설치 후 Android license status unknown 오류가 발생했을 때 확인해 볼 사항과 해결 방법을 정리해 본다.
Flutter 설치 후 Android license status unknown 오류 발생
[플러터 설치하고 앱 빌드 및 실행하기(윈도우)] 게시글을 참고해서 플러터 설치를 마친 뒤 명령 프롬프트에서 flutter doctor를 실행해 보니 Android license status unknown 메시지가 표시된다.
기존에는 Android Studio에서 Android SDK Command-line Tools (latest)를 설치한 뒤, 명령 프롬프트에서 flutter doctor --android-licenses를 실행하면 해결되었던 것으로 기억한다.
그런데 이번에는 같은 방법으로 진행해도 정상적으로 라이선스가 적용되지 않았다.
Flutter 공식 문서에서도 Android license status unknown 오류가 발생하면 먼저 Android SDK Command-line Tools가 설치되어 있는지 확인한 후 flutter doctor --android-licenses를 실행하도록 안내하고 있다.

앞서 언급한 대로 명령 프롬프트에서 flutter doctor --android-licenses를 실행하면 경고 메시지가 나오며 SDK 라이선스가 정상적으로 적용되지 않는다.

Java 버전 확인
혹시 Android Studio의 Java 버전과 관련된 문제일 수 있어 현재 사용 중인 Java 버전을 확인해 보았다.
명령 프롬프트에서 다음 명령을 실행한다.
C:\Program Files\Android\Android Studio\jbr\bin>java --version
확인해 보니 Java 21로 표시되었다.

현재 Flutter 공식 문서에서는 Android 개발 환경에 Java 17 이상이 필요하다, flutter doctor -v를 통해 Flutter가 실제로 사용하고 있는 Java 버전과 경로를 확인할 수 있다.
정확한 원인은 알 수 없으나, 현재 환경의 Java 21, Android SDK Command-line Tools 23.0 및 Flutter 설정 등의 영향으로 Flutter에서 Android SDK의 라이선스 관련 도구를 정상적으로 인식하지 못하는 것으로 보인다.
Flutter에서 사용할 JDK 지정
JDK 17을 설치해서 Flutter가 사용하도록 지정해 보았다.
설치할 때 기본 설치 경로가 다소 길고 복잡해서 설치 경로를 다음과 같이 지정했다.
[Microsoft Build of OpenJDK 다운로드]에서 OpenJDK 17 LTS(Windows X64 msi)를 다운로드하여 설치했다. 설치 경로는 다음과 같다.
C:\Program Files\Java\jdk-17

JDK 설치가 완료되면 Flutter에서 사용할 JDK 경로를 다음 명령으로 지정한다.
flutter config --jdk-dir "C:\Program Files\Java\jdk-17"
Flutter 공식 문서에서도 여러 JDK가 설치되어 있는 경우 flutter config --jdk-dir 명령을 사용하여 Flutter에서 사용할 JDK를 지정할 수 있다고 안내하고 있다.
설정이 제대로 되었는지 확인하려면 다음 명령을 실행해 볼 수 있다.
flutter doctor -v
출력되는 Java 관련 정보를 확인하여 Flutter가 C:\Program Files\Java\jdk-17의 JDK를 사용하고 있는지 확인한다.
Android SDK Command-line Tools 다시 설치
다음으로 Android Studio에서 Command-line Tools를 다시 설치했다.
Android Studio에서 File > Settings을 선택하고,
Languages & Frameworks > Android SDK > SDK Tools
순서로 이동한다.
여기에서 Show Package Details를 체크한 상태에서 Android SDK Command-line Tools 항목의 버전을 확인한다.
이번에는 기존에 설치되어 있던 Command-line Tools를 제거한 후 12.0 버전으로 다시 설치했다. 일반적인 설치 방법으로는 Android SDK Command-line Tools (latest) 설치를 권장한다.

Android SDK 라이선스 다시 적용
이제 명령 프롬프트에서 다음 명령을 실행한다.
flutter doctor --android-licenses
라이선스 관련 질문이 나오면 y를 입력하여 계속 진행한다.
Accept?와 같은 질문이 표시되는 경우에도 라이선스 내용을 확인한 후 y를 입력한다.

모든 라이선스가 정상적으로 적용되면 라이선스가 승인되었다는 메시지가 표시된다.
Flutter 공식 문서에서도 flutter doctor --android-licenses 명령을 실행한 후 각 라이선스를 검토하고 y를 입력하여 승인하도록 안내하고 있다.
flutter doctor로 다시 확인
라이선스 적용이 완료되었다면 다시 명령 프롬프트에서 다음 명령을 실행한다.
flutter doctor
확인 결과 Android 라이선스 문제가 해결되고 정상적으로 설치된 항목들이 표시된다.
모든 문제가 해결되었다면 다음과 같이 No issues found! 메시지가 표시된다.

이제 Flutter에서 Android 앱을 빌드하고 실행하기 위한 기본적인 Android 개발 환경 설정이 완료된 것이다.
마치며
Flutter 환경을 다시 구축한 후 Android license status unknown 오류가 발생한다면 먼저 Android SDK Command-line Tools가 설치되어 있는지 확인하고 flutter doctor --android-licenses를 실행하는 것이 기본적인 해결 방법이다.
그래도 문제가 해결되지 않는다면 flutter doctor -v로 Flutter가 사용하고 있는 JDK와 Android SDK 경로를 확인하고, 여러 JDK가 설치되어 있다면 flutter config --jdk-dir 명령으로 사용할 JDK를 명시적으로 지정해 보는 것도 방법이다.
이번 환경에서는 JDK 17을 지정하고 Android SDK Command-line Tools를 다시 설치한 후 flutter doctor --android-licenses를 실행하는 방법으로 Android license status unknown 오류를 해결할 수 있었다.
Flutter를 재설치하거나 개발 환경을 새로 구성할 때 같은 문제가 발생한다면 위 순서대로 하나씩 확인해 보면 좋을 듯 하다.