selfstarter

에러해결 Android toolchain - develop for Android devices (Android SDK version 29.0.3) 본문

App/Android

에러해결 Android toolchain - develop for Android devices (Android SDK version 29.0.3)

selfstarter 2020. 7. 4. 17:21

에러해결 Android toolchain - develop for Android devices (Android SDK version 29.0.3)

flutter doctor 명령어로 flutter 상태를 확인하였다.
하나가 빨간색이 떴는데 Android license를 찾을 수 없다는 것이었다.
보통은 run 으로 android license를 획득하는 명령어를 쳐라고 알려주는데 나는 그 경우가 아니었다.
검색결과 다음과 같은 방법으로 해결했다

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    X Android license status unknown.
      Try re-installing or updating your Android SDK Manager.
      See https://developer.android.com/studio/#downloads or visit visit
      https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.

      Android license status unknown. 

      flutter doctor --android-licenses  명령어 시
      ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\ojdkbuild\java-14-openjdk-14.0.1-1\bin
      Please set the JAVA_HOME variable in your environment to match the

일단 flutter는 android sdk 28.0.3이 기본이다.
그런데 나는 Android SDK version 29.0.3이 깔려 있다고 문구가 적혀있다. downgrade를 해야한다.
AndoidStudio에서 sdk다운로드받는 곳에서 Sdk tool 선택하고 Show pakage 체크박스를 선택하여 29버전은 제외하고 28.0.3 설치하면 된다


그래도 에러가 나길래flutter doctor --android-licenses 호출
그런데 다음과 같은 Java Exception 발생

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)

원인을 stackoverflow에서 찾았다. https://stackoverflow.com/questions/49758849/flutter-io-android-license-status-unknown
현재 sdk 버전이 JAVA9와 호환되지 않는다고 한다. 현재 컴퓨터에 깔려있는 java jdk가 openjdk라 그런가 싶어서 oracle jdk 설치
그 후 stack overflow에 나와있는대로 set JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee' 명령어 실행
그래도 안되어서 컴퓨터 다시 껐다가 키고 다시 flutter doctor를 하니

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses

run : flutter doctor --android-licenses 를 실행해라는 메시지가 떴다!
그래서 명령어 실행. 계속 y만 했다
All SDK package licenses accepted 성공

 

참고

https://github.com/flutter/flutter/issues/56778

'App > Android' 카테고리의 다른 글

Android Image Path 가져오기  (0) 2020.07.21
Android Spinner 사용법  (0) 2020.07.17
Flutter 기본사항 정리  (0) 2020.06.29
Flutter SDK, Android, VSCode 설치  (0) 2020.06.29
Dart 기본 문법 정리(Dart Basic Grammar)  (0) 2020.06.27
Comments