Статус лицензии Flutter.io Android неизвестен
[!] Android toolchain - разработка для Android-устройств (Android SDK 27.0.3)
• Android SDK a..\Android\sdk • Местоположение Android NDK не настроено (необязательно, полезно для поддержки собственного профилирования) • Платформа android-27, сборщики 27.0.3 • Java-двоичный файл: C:\Program Files\Android\Android Studio\jre\bin\java • Java-версия OpenJDK Runtime Environment (версия 1.8.0_152-release-1024-b02) Статус лицензии на Android X неизвестен.
Я получаю сообщение об ошибке с Android Sdk, когда я запускаю доктора Флаттера, хотя я все еще могу создать/запустить на своем устройстве. Мне просто было интересно узнать, как решить эту проблему. Я считаю, что у меня самая обновленная версия Android файла sdk, не знаю, что произошло, потому что у меня не было этой проблемы на прошлой неделе.
Новые проблемы
После нескольких возможных исправлений в комментариях это привело к новой проблеме. Я установил новые версии android sdk P, 8 и 7 вместе с новым jdk10. По-видимому, все еще недостаточно обновлено.
C:\Flutter\flutter>flutter doctor --android-licenses
A newer version of the Android SDK is required. To update, run:
C:\Users\tdmil\AppData\Local\Android\sdk\tools\bin\sdkmanager --update
C:\Flutter\flutter> C:\users\имя_пользователя\appdata\local\android\sdk\tools\bin\sdkmanager.bat --update
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:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 5 more
Ответы
Ответ 1
Если вы обновили SDK для Android, лицензии могут быть изменены. В зависимости от того, как вы сделали обновление, вам может или не может быть предложено принять изменения, или, может быть, это просто не спасет тот факт, что вы приняли их так, как может понять флаттер.
Чтобы решить проблему, попробуйте запустить flutter doctor --android-licenses
. Это должно побудить вас принять лицензии (он может сначала спросить вас, если вы просто наберете y
и нажмите enter, хотя он должен сказать вам об этом).
Если у вас все еще есть проблемы после этого, возможно, стоит либо открыть новую ошибку в репозитории Flutter Github, либо добавить комментарий к существующей проблеме, подобной этой, поскольку это может быть то, что вы видите.
Ответ 2
Ошибка:
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:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 5 more
происходит, потому что текущая версия SDK несовместима с Java 9.
Таким образом, чтобы решить эту проблему, вы можете понизить версию Java до Java 8 или с помощью обходного пути вы можете экспортировать следующую опцию на свой терминал:
Linux:
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Windows:
set JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
И чтобы он оставался неизменным, вы можете экспортировать JAVA_OPTS в файл своего профиля в linux (.zshrc
, .bashrc
и т.д.) Или добавить в качестве среды навсегда в Windows.
Затем вы можете ввести команду flutter или sdkmanager:
Флаттер:
flutter doctor --android-licenses
sdkmanager:
sdkmanager --licenses
и введите Y, когда необходимо принять лицензии.
Ответ 3
Вот шаги, которые решают мою проблему:
- Откройте терминал
- тип
flutter doctor --android-licenses
- нажмите
y
чтобы принять, этот процесс может произойти несколько раз. Готово!
Ответ 4
вот мое решение:
-
установить SDKMan
$ curl -s "https://get.sdkman.io" | bash
-
настройка вашего bash_profile
$ source "$HOME/.sdkman/bin/sdkman-init.sh
$ source ~/.bash_profile
-
найдите Java SDK и выберите хотите установить версию
$ sdk ls java
$ sdk install java 8.0.192-zulu
-
Скопируйте предупреждающее сообщение доктора флаттера, чтобы обновить sdkmanager
$/Users/YourUserName/Library/Android/sdk/tools/bin/sdkmanager --update
-
после 1 ~ 4 переделать
$ flutter doctor --android-licenses
Ответ 5
Это тоже моя проблема, как # 16025
Для исключения в потоке "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema Эта проблема обычно возникает, когда вы уже установили Java 9. Кстати, он несовместим с android-sdk, чтобы удалить Java 9 JDK, если он еще существует.
В общем, API-интерфейсы JAXB считаются API-интерфейсами Java EE и поэтому больше не содержатся в пути класса по умолчанию в Java SE 9. В Java 9 представлены концепции модулей, и по умолчанию модуль агрегата java.se доступен в классе путь (вернее, путь к модулю). Как следует из названия, модуль агрегации java.se не включает API Java EE, которые традиционно были связаны с Java 6/7/8. К счастью, эти API Java EE, которые были предоставлены в JDK 6/7/8, все еще находятся в JDK, но по умолчанию они просто не находятся на пути к классу. Дополнительные API Java EE предоставляются в следующих модулях
Решение обходного пути, если у вас установлен Java9/10
- Откройте sdkmanager в своем редакторе.
- Добавить DEFAULT_JVM_OPTS
замещать
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
С этим
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
- Сохраните файл и закройте редактор, затем попробуйте запустить команду еще раз.
Для неизвестного вопроса о статусе лицензии Android я попытался решить следующие действия:
- Открыть терминал
-
Перейдите в свое местоположение Android SDK. C:\Users% user%\AppData\Local\Android\Sdk\tools\bin или ~/Library/Android/sdk/tools/bin
-
Выполните команду:./sdkmanager --license
Рекомендации
Не удалось запустить sdkmanager --list (Android SDK) с Java 9
Как разрешить java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException в Java 9
Ответ 6
Эта строка, предоставленная сообществу проблем GitHub, исправила мою проблему, вот она на всякий случай, когда она помогает кому-то еще.
@rem Execute sdkmanager
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee %JAVA_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%
Ответ 7
Я нашел это решение для использования JDK 8 (вам нужна учетная запись для загрузки сейчас!) - используйте встроенный OpenJDK, который поставляется с Android Studio:
Добавьте это к вашему ~/.profile
или подобному:
# Use the JDK embedded with Android Studio for command-line builds
export JAVA_HOME='/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home'
Сборки из командной строки с помощью gradlew
и любого другого скрипта с хорошим поведением будут использовать версию SDK, поставляемую с Android Studio 2. 2+.
* Мой Mac все еще использовал Java 7 по умолчанию.
Ответ 8
Та же проблема для меня, проверьте версию Java, по крайней мере, она должна быть 1,8
Ответ 9
откройте файл flutter_console.bat из корневой папки Flutter SDK и выполните команду
flutter doctor --android-licenses
он будет принимать лицензии на недавно загруженные обновления Android SDK. Вам нужно запускать его каждый раз, когда вы загружаете и обновляете Android SDK.
Ответ 10
Не работает с JDK 11, проблема Slove при установке JDK 8
Ответ 11
- Откройте Android Studio.
- Перейдите на File-> Настройки.
- Поиск
AndroidSDK
. - Обновите свой уровень API до последней версии.
- Затем перезагрузите Android Studio.
Ответ 12
Попробуйте понизить версию Java, это произойдет, когда версия Java вашей системы несовместима с версией от Android. После того, как вы изменили свою версию Java, просто запустите flutter doctor
, она автоматически примет лицензии.
Ответ 13
Попробуйте установить Java SE 8. Версия 11 или 12 не работает, по крайней мере, для меня
Ответ 14
MacOS 10.15:
Android Studio 3.5.1:
Решением, которое мне помогло, было использование инструмента Java Environment jenv
(установленного через homebrew). Этот инструмент изменяет $ JAVA_HOME при переключении между версиями Java.
В моем случае у меня установлено несколько версий Java, и по умолчанию используется текущая глобальная версия. Я также счел необходимым закомментировать переменную окружения $ JAVA_HOME в моем .bash_profile
при использовании этого инструмента.
В Терминале я ввел jenv global 1.8
, чтобы запустить java 1.8 вместо более поздней версии (у меня установлено несколько версий).
После этого:
flutter doctor --android-licenses
ИЛИ
sdkmanager --licenses
оба работают нормально.
Примечание. Возможно, вам придется выйти и снова открыть оболочку терминала, если у вас есть переопределить переменную среды $ JAVA_HOME.