>[!] Android toolchain - develop for Android devices (Android SDK 27.0.3)
>>• Android SDK a ..\Android\sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-27, build-tools 27.0.3
• Java binary at C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)
X Android license status unknown.
Когда я запускаю 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
Этот ответ был полезен для установки лицензий sdk play store из графического интерфейса студии Android. stackoverflow.com/a/65899101/3834325




Если вы обновили Android SDK, возможно, изменились лицензии. В зависимости от того, как вы выполнили обновление, вам может быть предложено принять изменения, а может и нет, или, может быть, это просто не сохраняет тот факт, что вы их приняли так, как это может понять flutter.
Чтобы решить эту проблему, попробуйте запустить
flutter doctor --android-licenses
Это должно побудить вас принять лицензии (сначала он может спросить вас, в случае, если просто введите y и нажмите ввод - хотя он должен сказать вам об этом).
Если после этого у вас все еще есть проблемы, возможно, стоит либо открыть новую ошибку в Репозиторий Flutter Github, либо добавить комментарий к существующей проблеме, такой как Вот этот, поскольку это может быть то, что вы видите.
Он говорит мне, что требуется более новая версия Android SDK. Для обновления запустите: C: \ Users \ abc \ AndroidSDK \ tools \ bin \ sdkmanager --update. Что мне делать?
@HuzaifaAsif пробовали ли вы запустить эту команду? Надеюсь, это исправит проблему. Если это не удается, вы можете найти другой вопрос или задать новый об этом.
@HuzaifaAsif, я также сталкивался с этой проблемой пару раз. Как ответил Томми C ниже, попробуйте установить java 1.8 вручную и установить $ JAVA_HOME в его папку bin, затем запустите flutter doctor --android-licenses и примите все лицензии. Надеюсь, поможет.
@HuzaifaAsif, как вы переустановили SDK ... Я застрял в этой ошибке, так как использую Android Studio версии 3.6
Просто головы! Это сработало только для меня, используя Java 8.
Ошибка: не удалось открыть `C: \ Program Files \ Android \ Android Studio \ jre \ jre \ lib \ amd64 \ jvm.cfg 'Я получаю эту ошибку?
Вот шаги, которые решают мою проблему:
flutter doctor --android-licensesy для подтверждения, этот процесс может происходить несколько раз. Сделанный!Это тоже была моя проблема, такая же, как # 16025
Для исключения в потоке "main" java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema Эта проблема обычно возникает, если вы уже установили Java 9 раньше. Кстати, он несовместим с android-sdk, попробуйте удалить Java 9 JDK, если он все еще существует.
In general JAXB APIs are considered to be Java EE APIs, and therefore are no longer contained on the default class path in Java SE 9. Java 9 introduces the concepts of modules, and by default the java.se aggregate module is available on the class path (or rather, module path). As the name implies, the java.se aggregate module does not include the Java EE APIs that have been traditionally bundled with Java 6/7/8. Fortunately, these Java EE APIs that were provided in JDK 6/7/8 are still in the JDK, but they just aren't on the class path by default. The extra Java EE APIs are provided in the following modules
Решение для обходного пути, если у вас установлена 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 или ~ / Библиотека / Android / SDK / инструменты / 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%
Ошибка:
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'
Окна:
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
другой вариант, если у вас установлены как java 11, так и 8, - экспортировать точку JAVA_HOME в java8: export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
Я изменил JAVA_HOME на JDK 8 в переменных среды в Windows, и это сработало
это не работает, поскольку java.se.ee удален в более новых версиях java
Вы не можете сделать это в Java 11. Вы должны установить Java 8. См. этот ответ
Если в Linux вы можете использовать: sudo update-alternatives --config java
Я исправил это, установив инструменты командной строки Android SDK, что можно легко сделать в диспетчере SDK.
В MacOS вместо этого следует следовать этому ответу stackoverflow.com/a/65899101/3834325
У меня такая же проблема, проверьте свою версию Java хотя бы 1,8
откройте файл flutter_console.bat из корневой папки flutter SDK и выполните команду
flutter doctor --android-licenses
он будет принимать лицензии на недавно загруженные обновления Android SDK. Вам нужно запускать его каждый раз, когда вы загружаете и обновляете Android SDK.
вот мое решение:
установить 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
Стоп! java 8.0.192-zulu недоступен. Возможные причины: * 8.0.192-zulu - недопустимая версия * двоичные файлы java несовместимы с Darwin * java еще не выпущен
AndroidSDK.Попробуйте понижение версии Java, это произойдет, когда версия Java вашей системы несовместима с версией Android. После того, как вы изменили версию java, просто запустите flutter doctor, он автоматически примет лицензии.
Я нашел этот решение из-за необходимости использовать 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 по умолчанию.
MacOS 10.15: Android Studio 3.5.1:
Решение, которое работает для меня, заключалось в использовании Инструмент Java Environmentjenv (устанавливается через домашнее пиво). Этот инструмент изменяет $ JAVA_HOME при переключении между версиями Java.
В моем случае у меня установлено несколько версий Java, и по умолчанию используется текущая глобальная версия. Я также счел необходимым закомментировать переменную окружения $ JAVA_HOME в моем .bash_profile при использовании этого инструмента.
В терминале я ввел jenv global 1.8, чтобы запустить java 1.8 вместо более поздней версии (у меня установлено несколько версий).
После этого:
flutter doctor --android-licenses
ИЛИ ЖЕ
sdkmanager --licenses
оба работают нормально.
Note: You may need to exit and reopen your Terminal shell if you have to redefine the $JAVA_HOME environment variable.
Для тех, кто все еще сталкивается с проблемой:
Как ответил ниже Томми Си, Аба и несколько других людей, но может быть недостаточно ясно, как я нашел.
Попробуйте установить 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: [https://askubuntu.com/questions/175514/how-to-set-java-home-for-java].
Затем запустите flutter doctor --android-licenses и примите все лицензии. Надеюсь, поможет.
Я понизил свою версию Java до 1.8, и это решено, вот ссылка для загрузки JDK8
После установки JDK8 выполните следующую команду
flutter doctor --android-licenses
ПРЕДУПРЕЖДЕНИЕ: Этот ответ полезен, если у вас есть проблемы с переменной окружения JAVA_HOME и ее направлением. Если у вас нет этой проблемы, вам не следует пробовать это решение.
Если у вас есть эта ошибка, и вы пробовали использовать flutter doctor --android-licenses или sdkmanager --licenses, и у вас возникла проблема с вашей переменной окружения JAVA_HOME, то вы должны это прочитать.
У меня есть MacOS Catalina, и я могу успешно решить эту проблему, выполнив следующие действия:
Пожалуйста, дайте мне знать, если у вас есть сомнения.
Я нашел это решение. Я загружаю JDK 8, затем добавляю имя пути к файлу JAVA_HOME для загрузки jdk в пользовательские переменные в переменной среды.
Правильным решением будет, если у вас установлена студия Android, тогда
Android SDK Tools (Obsolete)flutter doctor, и теперь она должна предложить вам запустить flutter doctor --android-licenses
как только вы запустите лицензионную команду, примите все лицензии, нажав y, и это должно решить проблемуЭто отличается от верхнего ответа.
это в точности текущая официальная документация для Mac по состоянию на 18 марта 2020 года - см. flutter.dev/docs/get-started/install/…. Это известная проблема.
Спасибо за ссылку, @yair этого не знал
Это сработало для меня в новой сборке. Другие варианты переменных ENV и / или устаревших пакетов не работали. Я использую Neo4j с JAVA 11, поэтому я хотел использовать эту версию. Не уверен, почему разработчики так усложняют задачу. Потратил на это час и даже еще не установил.
Я пишу это из-за разочарования при установке flutter ... Большинство проблем вызвано простыми проблемами конфигурации. Выполните следующие действия, чтобы решить ваши проблемы.
ШАГ 1. ЛИЦЕНЗИИ ANDROID --android-licenses, решит большинство случаев
Поскольку вы находитесь здесь, вы столкнулись с проблемой «Android License Status Unknown» для цепочки инструментов Android, как многие предлагали tryflutter doctor --android-licenses. Если вы хорошо разбираетесь в config. Он должен спросить «да», нажать y и вуаля. Но если он показывает
Android sdkmanager tool не найден (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

ПРИМЕЧАНИЕ: автор Янив маймон: если на вашем компьютере уже установлена Java, а sdkmanager --update все еще не работает. перейдите в переменную среды и обновите путь "JAVA_HOME" до папки jdk. затем выйдите из командной строки, откройте ее снова и запустите команду обновления -
ШАГ 6: Заключительный шаг
После правильной установки и настройки пути запустите C\Users\__\local\Android\sdk\tools\bin\sdkmanager --updateкоманда в новом терминале, и он заработает.
ШАГ 7: Повторите запуск доктора трепетания,
Вы можете видеть, что он говорит о запуске команды flutter doctor --android-licenses. поэтому запустите flutter doctor --android-licenses в терминале и нажмите y, когда его спросят
если на вашем компьютере уже установлена Java, а sdkmanager --update все еще не работает. перейдите в переменную среды и обновите путь "JAVA_HOME" до папки jdk. затем выйдите из командной строки, откройте ее снова и запустите команду обновления
Я столкнулся с той же проблемой, как упоминалось выше, я пробовал их.
Вот что сработало для меня:
flutter doctor --android-licenses и выберите y для запросовflutter doctor и все будет хорошо !!!!Вот что я сделал, чтобы исправить свою проблему. Обратите внимание, что вам не нужно удалять старую копию Android Studio / SDK. Android Studio позаботится об этом, пока вы устанавливаете последнюю версию.
Для тех из вас, кто работает в Linux и продолжает получать ошибки во время flutter doctor --android-licenses.
Я продолжал получать предупреждение не удалось создать настройки при попытке принять лицензии, что я исправил, указав местоположение SDK:
sdkmanager --sdk_root=/home/adel/bin/android-sdk --licenses
Затем Sdkmanager напечатал: все лицензии на пакеты SDK приняты.
Однако Flutter продолжал выдавать ошибку статус лицензии Android неизвестен. И попытка вызвать flutter doctor --android-licenses дала бы мне ту же ошибку не удалось создать настройки, которую я получал раньше.
Чтобы исправить это, я отредактировал сценарий sdkmanager, расположенный в $ {расположение ваших инструментов Android} / tools / bin /, и изменил последнюю строку с:
exec "$JAVACMD" "$@"
К:
exec "$JAVACMD" "$@" --sdk_root=/home/adel/bin/android-sdk
Это заставит Flutter вызывать sdkmanager при передаче необходимого аргумента sdk_root, последний вызов flutter doctor --android-licenses устранил проблему.
Мне не пришлось использовать Java 8.
Спасибо за ответ, это устранило мою проблему. Я не понимаю, почему кто-то проголосовал против. Еще раз спасибо.
Единственное решение в Интернете, которое сработало для меня! Спасибо дружище! :)
Обратитесь - 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 studio
Хорошо, теперь, если вы запустите 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). Надеюсь, это руководство поможет людям, которые ищут решение.
Это мне очень помогает :)
Я столкнулся с проблемой. Папка 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.
Моя среда: 64-разрядная Windows 10, OpenJDK 14.0.2
Исходные ошибки указаны выше.
Ошибка была устранена после
После большого анализа моей Ubuntu 20.04 я нашел решение.
для меня ошибка заключалась в том, что в /home/rk/Android/Sdk/tools/bin/sdkmanager отсутствовало разрешение написать.
chmod +w home/rk/Android/Sdk/tools/bin/sdkmanagerЗатем запустите приведенную ниже команду.
flutter doctor --android-licensesон автоматически обрабатывает лицензии.
Следуйте этим простым шагам.
Просто установите инструмент командной строки sdk (последний), как показано ниже, в студии Android.

я тоже этого пропустил :) Большое спасибо
Мне пришлось это сделать до запуска flutter doctor --android-licenses
это самый полезный ответ, по крайней мере, для моей машины ubuntu.
Спасибо, самый полезный ответ !!
Это отлично работает, ты братан!
не могу передать, как я благодарен! Благодаря тонну!!!
Спасибо, мужик! ты сэкономил время
Работает хорошо! Спасибо
Спасибо. работает хорошо
Используя cmdline-tools без Android Studio, вместо этого вызовите sdkmanager "cmdline-tools;latest" в командной строке.
В течение нескольких дней я пробовал все, что нахожу в Интернете, и вот эта небольшая помощь - это то, чего мне не хватало. Спасибо. Идк, почему это не принятый ответ.
Может быть полезно для будущих ссылок. Я использовал Windows 10 и версию JDK 11. Как было предложено большинством людей, я понизил свой JDK до версии 8. Затем я выполнил
flutter doctor. Он по-прежнему говорит, что необходимо принять лицензию. Затем я запустилflutter doctor --android-licensesи сказалyesдля всех лицензионных соглашений. Наконец проблема ушла :). Take away - переход на JDK 8 устранит проблему.