[!] Набор инструментов Android - разработка для устройств Android (Android SDK 27.0.3) >> • Android SDK a .. \ Android \ sdk • Местоположение Android NDK не настроено (необязательно; полезно для поддержки нативного профилирования) • Платформа android-27, build-tools 27.0.3 • Бинарный файл Java в C: \ Program Files \ Android \ Android Studio \ jre \ bin \ java • Версия Java Среда выполнения OpenJDK (сборка 1.8.0_152-release-1024-b02) X Статус лицензии Android неизвестен.
Когда я запускаю Flutter doctor, я получаю сообщение об ошибке с 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 \ username \ 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
flutter doctor
. Он по-прежнему говорит, что необходимо принять лицензию. Затем я побежалflutter doctor --android-licenses
и сказалyes
все лицензионные соглашения. Наконец проблема ушла :). Take away - понижение версии до JDK 8 устранит проблемуОтветы:
Если вы обновили Android SDK, лицензии могли измениться. В зависимости от того, как вы выполнили обновление, вам может быть предложено принять изменения, а может и нет, или, может быть, это просто не сохраняет тот факт, что вы их приняли так, как это может понять flutter.
Чтобы решить эту проблему, попробуйте запустить
flutter doctor --android-licenses
Это должно побудить вас принять лицензии (сначала он может спросить вас, в случае, если просто введите
y
и нажмите ввод - хотя он должен сказать вам это).Если после этого у вас все еще есть проблемы, возможно, стоит либо открыть новую ошибку в репозитории Flutter Github , либо добавить комментарий к существующей проблеме, подобной этой, поскольку это может быть то, что вы видите.
источник
Ошибка:
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, когда необходимо принять лицензии.
пс. Это не работает для Java 11/11 +, в которой нет модулей Java EE. Для этого варианта - хорошая идея, понизьте версию Java или дождитесь обновления Flutter .
Ссылка: JDK 11: конец пути для модулей Java EE
источник
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
java.se.ee
удалено в более новых версиях javaПравильным решением будет, если у вас установлена студия Android, тогда
Android SDK Tools (Obsolete)
flutter doctor
и теперь она должна предложить вам запустить, какflutter doctor --android-licenses
только вы запустите команду лицензии, примите все лицензии, нажав y, и это должно решить проблемуисточник
Я пишу это из-за разочарования при установке flutter ... Большинство проблем вызвано простыми проблемами конфигурации. Выполните следующие действия, чтобы решить ваши проблемы.
ШАГ 1. ЛИЦЕНЗИИ ANDROID - лицензии на Android решат большинство случаев
Поскольку вы находитесь здесь, вы столкнулись с проблемой «Статус лицензии Android неизвестен» для цепочки инструментов Android, как многие предлагали попробовать
flutter doctor --android-licenses
. Если вы хорошо разбираетесь в config. Он должен спросить «да», нажать y и вуаля. Но если он показываетИнструмент Android sdkmanager не найден
(C\Users\__\local\Android\sdk\tools\bin\sdkmanager)
. Перейти к шагу дваШАГ 2: установка SDK Manager из Android Studio
Откройте Android Studio,
File-> settings->System settings(left tab) ->Android SDK,
перейдите наSDK Tool section
эту страницу, снимите флажок «Скрыть устаревшие пакеты», выберитеAndroid SDL tools(obsolete)
и нажмите «Применить».Он установит SDK, и вы подтвердите его, перейдя и проверив, существует ли этот путь.
(C\Users\__\local\Android\sdk\tools\bin\sdkmanager)
ШАГ 3: повторить 1
Повторите шаг 1 после установки в новой командной строке, проверьте, работает ли он, иначе перейдите к ШАГУ 4
ШАГ 4: sdkmanager --update
Он попросит вас обновить SDK, просто запустите команду, указанную в терминале
C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update
. Если он запущен, то это круто. дайте ему закончить и повторите шаг 1, иначе, если он выбрасывает некоторые исключения, например, иjava.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
т. д., это означает, что ваша java не установлена или неправильная версия. Перейти к следующему шагуШАГ 5: JAVA 8.1 и путь JAVA_HOME.
Установите JAVA 8.1 и укажите путь JAVA_HOME. Убедитесь, что это версия 8.1 (зарегистрируйте бесплатную учетную запись и загрузите с oracle версию 8.1, помните, что выше 11+ не работает для flutter
ЗАМЕТКА : от yaniv maymon: если на вашем компьютере уже установлена Java, а sdkmanager --update все еще не работает. перейдите в переменную среды и обновите путь "JAVA_HOME" до папки jdk. затем выйдите из командной строки, откройте ее снова и запустите команду обновления -
ШАГ 6: Последний шаг
После правильной установки и настройки пути запустите
C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update
команду в новом терминале и она будет работатьШАГ 7: Повторите запуск flutter doctor , вы можете увидеть, как он говорит, что нужно запустить команду
flutter doctor --android-licenses
. поэтому запуститеflutter doctor --android-licenses
терминал и нажмите y, когда его спросятисточник
Вот шаги, которые решают мою проблему:
flutter doctor --android-licenses
y
чтобы принять, этот процесс может происходить несколько раз. Готово!источник
Я нашел это решение для использования 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 по умолчанию.
источник
Просто установите инструмент командной строки sdk (последний), как показано ниже, в студии Android.
источник
flutter doctor --android-licenses
Это тоже была моя проблема, как и такая # 16025
Для исключения в потоке «main» java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema Эта проблема обычно возникает, если вы уже устанавливали Java 9 раньше. Кстати, он несовместим с android-sdk, попробуйте удалить Java 9 JDK, если он все еще существует.
Решение для обходного пути, если у вас установлена Java9 / 10
Заменить
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
источник
Эта строка, представленная в сообществе 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%
источник
вот мое решение:
установить 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
источник
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
оба работают нормально.
источник
Обратитесь - https://robbinespu.gitlab.io/blog/2020/03/03/flutter-issue-fixed-android-license-status-unknown-on-windows/
Итак, вот решение, откройте диспетчер SDK, затем снимите флажок
Hide Obsolete Packages
Теперь вы увидите, как
Android SDK Tools (Obsolete) 26.1.1
появляется. Отметьте этот пакет и нажмитеapply button
затем кнопку ОК. он загрузит sdk. затемrestart
студия AndroidХорошо, теперь, если вы побежите
flutter doctor
, вы должны получить положительный результат, как показано нижеPS D:\Workplace\flutter_projects> flutter doctor Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Channel stable, v1.12.13+hotfix.8, on Microsoft Windows [Version 10.0.18363.657], locale en-MY) [√] Android toolchain - develop for Android devices (Android SDK version 29.0.3) [√] Android Studio (version 3.6) [√] VS Code (version 1.42.1) [√] Connected device (1 available) • No issues found! PS D:\Workplace\flutter_projects> flutter doctor --android-licenses -v All SDK package licenses accepted.======] 100% Computing updates...
Запустите
flutter doctor --android-licenses
и введите Y, когда вас спросятпри необходимости мы можем загрузить пакет вручную здесь https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip (для пользователей Windows). Надеюсь, это руководство поможет людям, которые ищут решение.
источник
Для тех из вас, кто работает в Linux и продолжает получать ошибки во время
flutter doctor --android-licenses
.Я продолжал получать предупреждение о невозможности создания настроек при попытке принять лицензии, что я исправил, указав местоположение SDK:
sdkmanager --sdk_root=/home/adel/bin/android-sdk --licenses
Затем Sdkmanager напечатал: все лицензии на пакеты SDK приняты.
Однако Flutter продолжал выдавать неизвестную ошибку статуса лицензии Android . И попытка позвонить
flutter doctor --android-licenses
дала бы мне то же самое, что не могла создать ошибку настроек, которую я получал.Чтобы исправить это, я отредактировал
sdkmanager
скрипт, расположенный в папке $ {your android tools location} / tools / bin /, и изменил последнюю строку с:exec "$JAVACMD" "$@"
Кому:
exec "$JAVACMD" "$@" --sdk_root=/home/adel/bin/android-sdk
Это заставит Flutter вызывать sdkmanager при передаче необходимого аргумента sdk_root, что является последним вызовом для
flutter doctor --android-licenses
устранения проблемы.Мне не пришлось использовать Java 8.
источник
откройте файл flutter_console.bat из корневой папки flutter SDK и выполните команду
flutter doctor --android-licenses
он будет принимать лицензии на недавно загруженные обновления Android SDK. Вам нужно запускать его каждый раз, когда вы загружаете и обновляете Android SDK.
источник
Попробуйте понизить версию Java , это произойдет, если версия Java вашей системы несовместима с версией Android. После того, как вы изменили только что запущенную версию java,
flutter doctor
она автоматически принимает лицензии.источник
Я понизил свою версию Java до 1.8, и это решено, вот ссылка для загрузки JDK8
После установки JDK8 выполните следующую команду
flutter doctor --android-licenses
источник
Моя среда: Windows 10 64bit, OpenJDK 14.0.2
Исходные ошибки указаны выше.
Ошибка была устранена после
источник
В моем случае проблема отсутствовала
Android SDK Command-line tools
источник
У меня такая же проблема, проверьте свою версию Java, по крайней мере, она должна быть 1.8
источник
AndroidSDK
.источник
Для тех, кто все еще сталкивается с проблемой :
как ответил ниже Томми Си, Аба и несколько других людей, но может быть недостаточно ясно, как я это нашел.
Попробуйте установить java 1.8 вручную, как описано здесь, в windows / linux: [ https://www3.ntu.edu.sg/home/ehchua/programming/howto/JDK_Howto.html]
и установите переменную $ JAVA_HOME (путь jdk).
В Windows установите путь jdk ($ JAVA_HOME): [ Как установить java_home в Windows 7? .
В Linux: [ /ubuntu/175514/how-to-set-java-home-for-java] .
Затем запустите
flutter doctor --android-licenses
и примите все лицензии. Надеюсь, поможет.источник
Я нашел это решение. Я загружаю JDK 8, затем добавляю путь к файлу JAVA_HOME для загрузки jdk в пользовательские переменные в переменной среды.
источник
Я столкнулся с той же проблемой, как упоминалось выше, я пробовал их.
Вот что сработало для меня:
flutter doctor --android-licenses
и выбратьy
для подсказокflutter doctor
и все будет хорошо !!!!источник
Я столкнулся с проблемой.
tools
Папка была также отсутствует вAndroid SDK
папке. Я считаю, чтоtools
папка появляется только после установкиAndroid SDL tools(obsolete
). Этот вариант был мне недоступен.Решение: я обновил
Java
версию 8 до версии 12 и смог установить инструменты. Вы все еще можете получить ошибкуSome Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses
при подаче командыflutter doctor -v
. Запустите командуflutter doctor --android-licenses
, лицензии будут проверяться, когда вы нажимаетеyes
каждый раз, когда появляется этот вопросAccept? (y/N):
Надеюсь, это кому-то поможет.
источник
Если вы используете бочку для домашнего пивоварения , вы можете сделать
brew cask install android-sdk mkdir ~/Library/Android/sdk/tools ln -s /usr/local/bin/ ~/Library/Android/sdk/tools/bin flutter doctor --android-licenses
источник
Для пользователей Windows краткосрочным решением является переход на JDK8. Надеюсь, flutter скоро решит проблему для Android SDK, который будет работать с> JDK8.
источник
После тщательного анализа моего Ubuntu 20.04 я нашел решение.
для меня ошибка
/home/rk/Android/Sdk/tools/bin/sdkmanager
заключалась в отсутствии разрешения на запись .chmod +w home/rk/Android/Sdk/tools/bin/sdkmanager
Затем запустите следующую команду.
flutter doctor --android-licenses
он автоматически обрабатывает лицензии.
источник
Следуйте этим простым шагам.
источник
ПРЕДУПРЕЖДЕНИЕ : этот ответ полезен, если у вас есть проблемы с переменной окружения JAVA_HOME и ее направлением. Если у вас нет этой проблемы, вам не следует пробовать это решение.
Если у вас есть эта ошибка, и вы пробовали использовать flutter doctor --android-licenses или sdkmanager --licenses, и у вас возникла проблема с вашей переменной окружения JAVA_HOME, то вы должны это прочитать.
У меня есть MacOS Catalina, и я могу успешно решить эту проблему, выполнив следующие действия:
Пожалуйста, дайте мне знать, если у вас есть сомнения.
источник
Вот что я сделал, чтобы исправить свою проблему. Обратите внимание, что вам не нужно удалять старую копию Android Studio / SDK. Android Studio позаботится об этом, пока вы устанавливаете последнюю версию.
источник