[!] Android Toolchain - Entwickeln für Android-Geräte (Android SDK 27.0.3)
• Android SDK a .. \ Android \ sdk • Android NDK-Speicherort nicht konfiguriert (optional; nützlich für die Unterstützung nativer Profilerstellung) • Plattform Android-27, Build-Tools 27.0.3 • Java-Binärdatei unter: C: \ Programme \ Android \ Android Studio \ jre \ bin \ java • Java-Version OpenJDK-Laufzeitumgebung (Build 1.8.0_152-release-1024-b02) X Android-Lizenzstatus unbekannt.
Ich erhalte eine Fehlermeldung mit Android Sdk, wenn ich Flutter Doctor ausführe, obwohl ich immer noch auf meinem Gerät bauen / ausführen kann. Ich war nur neugierig, wie ich dieses Problem beheben kann. Ich glaube, ich habe die aktuellste Version des Android SDK heruntergeladen, nicht sicher, was passiert ist, weil ich dieses Problem letzte Woche nicht hatte.
Neue Probleme
Nachdem einige mögliche Korrekturen in den Kommentaren befolgt wurden, hat dies zu einem neuen Problem geführt. Ich habe neuere Versionen von Android SDK P, 8 und 7 zusammen mit einem neuen JDK10 installiert. Anscheinend immer noch nicht genug aktualisiert.
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: \ Benutzer \ Benutzername \ 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
. Es heißt immer noch, dass die Lizenz akzeptiert werden muss. Dann lief ichflutter doctor --android-licenses
und sagteyes
für alle Lizenzvereinbarungen. Endlich ist das Problem weg :). Take away ist ein Downgrade auf JDK 8, um das Problem zu behebenAntworten:
Wenn Sie das Android SDK aktualisiert haben, haben sich die Lizenzen möglicherweise geändert. Abhängig davon, wie Sie das Update durchgeführt haben, wurden Sie möglicherweise aufgefordert, die Änderungen zu akzeptieren, oder es wird einfach nicht die Tatsache gespeichert, dass Sie sie auf eine Weise akzeptiert haben, die Flattern verstehen kann.
Versuchen Sie zum Auflösen auszuführen
Dies sollte Sie auffordern, Lizenzen zu akzeptieren (möglicherweise werden Sie zuerst gefragt, falls Sie nur
y
eingeben und die Eingabetaste drücken - obwohl dies Ihnen mitteilen sollte).Wenn Sie danach immer noch Probleme haben, kann es sich lohnen, entweder einen neuen Fehler im Flutter Github-Repository zu öffnen oder einen Kommentar zu einem vorhandenen Problem wie diesem hinzuzufügen, da es möglicherweise das ist, was Sie sehen.
quelle
Der Fehler:
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
tritt auf, weil die aktuelle SDK-Version nicht mit Java 9 kompatibel ist.
Um dieses Problem zu lösen, können Sie Ihre Java-Version auf Java 8 herunterstufen oder mit einer Problemumgehung die folgende Option auf Ihr Terminal exportieren:
Linux:
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Windows :
set JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Und damit es bleiben, können Sie die JAVA_OPTS in Ihrem Profil - Datei auf Linux exportieren (
.zshrc
,.bashrc
usw.) oder fügen Sie als Umgebung permanent unter Windows.Anschließend können Sie den Befehl flutter oder sdkmanager eingeben:
Flattern :
sdkmanager :
und geben Sie bei Bedarf Y ein, um die Lizenzen zu akzeptieren.
ps. Dies funktioniert nicht für Java 11/11 +, das keine Java EE-Module enthält. Für diese Option empfiehlt es sich, ein Downgrade Ihrer Java-Version durchzuführen oder auf ein Flutter- Update zu warten .
Ref: JDK 11: Ende der Straße für Java EE-Module
quelle
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
java.se.ee
es auf den neueren Versionen von Java entfernt wurdeDie richtige Lösung wäre, wenn Sie dann Android Studio installiert haben
Android SDK Tools (Obsolete)
flutter doctor
und Sie sollten nun aufgefordert werden, ihn auszuführen,flutter doctor --android-licenses
sobald Sie den Lizenzbefehl ausführen. Akzeptieren Sie alle Lizenzen, indem Sie auf y klicken, und das Problem sollte behoben seinquelle
Ich schreibe dies wegen der Frustration bei der Installation von Flatter ... Die meisten Probleme werden durch einfache Konfigurationsprobleme verursacht. Befolgen Sie diese Schritte, um Ihre Probleme zu beheben.
SCHRITT 1: ANDROID-LIZENZEN - Android-Lizenzen lösen die meisten Fälle
Seit Sie hier sind, haben Sie das Problem "Android-Lizenzstatus unbekannt" für die Android-Toolkette erreicht, wie viele vorgeschlagen haben
flutter doctor --android-licenses
. Wenn Sie mit der ganzen Konfiguration gut sind. Es sollte nach einem Ja fragen und y und Voila drücken. Aber wenn es zeigt aAndroid SDKmanager Tool nicht gefunden
(C\Users\__\local\Android\sdk\tools\bin\sdkmanager)
. Fahren Sie mit Schritt zwei fortSCHRITT 2: SDK Manager-Installation von Android Studio
Öffnen Sie Ihr Android Studio,
File-> settings->System settings(left tab) ->Android SDK,
gehen Sie zuSDK Tool section
dieser Seite, deaktivieren Sie veraltete Pakete ausblenden, wählen SieAndroid SDL tools(obsolete)
und klicken Sie auf Übernehmen .Das SDK wird installiert und Sie bestätigen es, indem Sie überprüfen, ob dieser Pfad vorhanden ist
(C\Users\__\local\Android\sdk\tools\bin\sdkmanager)
SCHRITT 3: Wiederholen Sie 1
Wiederholen Sie Schritt 1 nach der Installation in einer neuen Befehlszeile. Überprüfen Sie, ob es funktioniert. Fahren Sie andernfalls mit SCHRITT 4 fort
SCHRITT 4: sdkmanager --update
Sie werden aufgefordert, das SDK zu aktualisieren. Führen Sie einfach den im Terminal angegebenen Befehl aus
C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update
. Wenn es läuft, ist es cool. Lassen Sie es beenden und wiederholen Sie Schritt 1, sonst wenn es einige Ausnahmen wiejava.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
etc auslöst, bedeutet dies, dass Ihr Java nicht installiert ist oder nicht die richtige Version. Fahren Sie mit dem nächsten Schritt fortSCHRITT 5: Pfad JAVA 8.1 und JAVA_HOME.
Installieren Sie JAVA 8.1 und legen Sie den Pfad JAVA_HOME fest. Stellen Sie sicher, dass es sich um Version 8.1 handelt (registrieren Sie ein kostenloses Konto und laden Sie die Version 8.1 von Oracle herunter. Denken Sie daran, dass ab 11+ kein Flattern mehr möglich ist
HINWEIS : von yaniv maymon: Wenn Sie Java bereits auf Ihrem Computer installiert haben und das sdkmanager --update immer noch nicht funktioniert. Gehen Sie zur Umgebungsvariablen und aktualisieren Sie den Pfad "JAVA_HOME" zum Ordner "jdk". Beenden Sie dann die Eingabeaufforderung, öffnen Sie sie erneut und führen Sie den Befehl update aus.
SCHRITT 6: Letzter Schritt
Führen Sie den
C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update
Befehl nach der ordnungsgemäßen Installation und Einrichtung des Pfads in einem neuen Terminal aus, und er funktioniertSCHRITT 7: Führen Sie den Flatterarzt erneut aus . Sie können sehen, dass der Befehl ausgeführt wird
flutter doctor --android-licenses
. Führen Sie dasflutter doctor --android-licenses
Terminal aus und drücken Sie y, wenn Sie dazu aufgefordert werdenquelle
Hier sind die Schritte, die mein Problem lösen:
flutter doctor --android-licenses
y
, um zu akzeptieren. Dieser Vorgang kann mehrmals ausgeführt werden. Erledigt!quelle
Ich habe diese Lösung gefunden , um JDK 8 verwenden zu müssen (Sie benötigen jetzt ein Konto zum Herunterladen!) - verwenden Sie das eingebettete OpenJDK, das mit Android Studio geliefert wird:
Fügen Sie dies Ihrem
~/.profile
oder ähnlichem hinzu:# Use the JDK embedded with Android Studio for command-line builds export JAVA_HOME='/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home'
Befehlszeilen-Builds über
gradlew
und jedes andere gut erzogene Skript verwenden dann die Version des SDK, das im Lieferumfang von Android Studio 2.2+ enthalten ist.* Mein Mac verwendete immer noch das Standard-Java 7.
quelle
Dies war auch mein Problem wie # 16025
Für eine Ausnahme im Thread "main" java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema Dieses Problem tritt normalerweise auf, wenn Sie Java 9 zuvor installiert haben. Übrigens ist es nicht kompatibel mit android-sdk. Versuchen Sie, Java 9 JDK zu entfernen, falls es noch vorhanden ist.
Problemumgehung, wenn Java9 / 10 installiert ist
Ersetzen
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
Mit diesem
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Für ein unbekanntes Problem mit dem Android-Lizenzstatus habe ich versucht, Folgendes zu lösen:
Wechseln Sie zu Ihrem Android SDK-Speicherort C: \ Benutzer% Benutzer% \ AppData \ Local \ Android \ Sdk \ tools \ bin oder ~ / Library / Android / sdk / tools / bin
Führen Sie den folgenden Befehl aus: ./sdkmanager --license
Verweise
Fehler beim Ausführen von sdkmanager --list (Android SDK) mit Java 9
So lösen Sie java.lang.NoClassDefFoundError: javax / xml / bind / JAXBException in Java 9
quelle
Diese Zeile in der GitHub Issue Community hat mein Problem behoben. Hier ist es nur für den Fall, dass es jemand anderem hilft.
@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%
quelle
Hier ist meine Lösung:
Installieren Sie SDKMan
$ curl -s "https://get.sdkman.io" | bash
Einstellen Ihres bash_profile
$ source "$HOME/.sdkman/bin/sdkman-init.sh
$ source ~/.bash_profile
Suchen Sie nach Java SDK und wählen Sie Version installieren
$ sdk ls java
$ sdk install java 8.0.192-zulu
Kopieren Sie die Warnmeldung Ihres Flatterarztes, um sdkmanager zu aktualisieren
$ /Users/YourUserName/Library/Android/sdk/tools/bin/sdkmanager --update
Nach 1 ~ 4 wiederholen Sie es
$ flutter doctor --android-licenses
quelle
Installieren Sie einfach das SDK-Befehlszeilentool (neueste Version) in Android Studio.
quelle
flutter doctor --android-licenses
MacOS 10.15: Android Studio 3.5.1:
Die Lösung, die für mich funktioniert, war die Verwendung des Java Environment-Tools
jenv
(installiert über Homebrew ). Dieses Tool ändert das $ JAVA_HOME, wenn zwischen Java-Versionen gewechselt wird .In meinem Fall habe ich mehrere Java-Versionen installiert und die aktuell verwendete globale Version war die Standardeinstellung. Ich fand es auch notwendig, die Umgebungsvariable $ JAVA_HOME in meinem zu kommentieren,
.bash_profile
wenn ich dieses Tool verwende.In Terminal habe ich eingegeben
jenv global 1.8
, um Java 1.8 anstelle einer späteren Version zum Laufen zu bringen (ich habe mehrere Versionen installiert).Nachdem:
flutter doctor --android-licenses
ODER
sdkmanager --licenses
beide funktionieren gut.
quelle
Siehe-- https://robbinespu.gitlab.io/blog/2020/03/03/flutter-issue-fixed-android-license-status-unknown-on-windows/
Öffnen Sie hier Ihren SDK-Manager und deaktivieren Sie das Kontrollkästchen
Hide Obsolete Packages
Jetzt sehen Sie
Android SDK Tools (Obsolete) 26.1.1
erscheint. Kreuzen Sie das Paket an und klicken Sieapply button
dann auf OK. es wird sdk herunterladen. dannrestart
Android StudioSchön, wenn Sie jetzt laufen
flutter doctor
, sollten Sie wie unten ein positives Ergebnis erzielenPS 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...
Führen Sie
flutter doctor --android-licenses
Y aus und geben Sie Y ein, wenn Sie dazu aufgefordert werdenBei Bedarf können wir das Paket hier manuell herunterladen: https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip (für Windows-Benutzer). Hoffe, dieses Tutorial hilft Menschen, die nach einer Lösung suchen
quelle
Für diejenigen unter Ihnen, die unter Linux arbeiten und währenddessen immer wieder Fehler bekommen
flutter doctor --android-licenses
.Beim Versuch, Lizenzen zu akzeptieren, wurde immer wieder die Warnung angezeigt, dass keine Einstellungen erstellt werden konnten. Dies wurde durch Angabe des SDK-Speicherorts behoben:
Sdkmanager druckte dann: Alle SDK-Paketlizenzen werden akzeptiert.
Allerdings gab Flutter dem Android-Lizenzstatus weiterhin einen unbekannten Fehler. Und der Versuch, anzurufen,
flutter doctor --android-licenses
würde mir das gleiche geben, konnte keinen Einstellungsfehler erzeugen, den ich früher bekam.Um dies zu beheben, habe ich das
sdkmanager
Skript in $ {Speicherort Ihrer Android-Tools} / tools / bin / bearbeitet und die letzte Zeile geändert von:exec "$JAVACMD" "$@"
Zu:
exec "$JAVACMD" "$@" --sdk_root=/home/adel/bin/android-sdk
Dies würde Flutter dazu bringen, sdkmanager aufzurufen, während das erforderliche sdk_root-Argument übergeben wird. Dies ist ein letzter Aufruf, um
flutter doctor --android-licenses
das Problem zu beheben .Ich musste kein Java 8 verwenden.
quelle
Öffnen Sie die Datei flutter_console.bat aus dem Stammordner des flutter SDK und führen Sie den Befehl aus
Es akzeptiert die Lizenzen für neu heruntergeladene Updates des Android SDK. Sie müssen es jedes Mal ausführen, wenn Sie das Android SDK herunterladen und aktualisieren.
quelle
Versuchen Sie, Ihre Java-Version herunterzustufen . Dies geschieht, wenn die Java-Version Ihres Systems nicht mit der von Android kompatibel ist. Sobald Sie die gerade ausgeführte Java-Version geändert
flutter doctor
haben, werden die Lizenzen automatisch akzeptiert.quelle
Ich habe meine Java-Version auf 1.8 heruntergestuft und sie wurde behoben. Hier ist der Link zum Herunterladen von JDK8
Führen Sie nach der Installation von JDK8 den folgenden Befehl aus
quelle
Meine Umgebung: Windows 10 64bit, OpenJDK 14.0.2
Die anfänglichen Fehler sind wie oben angegeben.
Fehler wurde nach behoben
quelle
In meinem Fall fehlte das Problem
Android SDK Command-line tools
quelle
Das gleiche Problem für mich, überprüfen Sie Ihre Java-Version mindestens muss es 1.8 sein
quelle
AndroidSDK
.quelle
Für jemanden, der immer noch mit dem Problem konfrontiert ist :
Wie unten von Tommie C, Aba und wenigen anderen Personen beantwortet, aber möglicherweise nicht klar genug, wie ich es gefunden habe.
Versuchen Sie, Java 1.8 manuell zu installieren, wie hier unter Windows / Linux beschrieben: [ https://www3.ntu.edu.sg/home/ehchua/programming/howto/JDK_Howto.html]
und setzen Sie die Variable $ JAVA_HOME (jdk-Pfad).
Unter Windows den JDK-Pfad festlegen ($ JAVA_HOME): [ Wie wird Java_Home unter Windows 7 festgelegt? .
Unter Linux: [ /ubuntu/175514/how-to-set-java-home-for-java] .
Führen Sie dann
flutter doctor --android-licenses
alle Lizenzen aus und akzeptieren Sie sie. Ich hoffe es hilft.quelle
Ich habe JDK 8 heruntergeladen. Dann füge ich den Download des JDK-Dateipfadnamens von JAVA_HOME zu den Benutzervariablen in der Umgebungsvariablen hinzu.
quelle
Ich hatte das gleiche Problem, wie oben erwähnt, habe ich diese ausprobiert.
Das hat bei mir funktioniert:
flutter doctor --android-licenses
und auswähleny
für die Eingabeaufforderungenflutter doctor
und alles wird gut !!!!quelle
Ich stand vor einem Problem. Der
tools
Ordner fehlte auch imAndroid SDK
Ordner. Ich glaube,tools
Ordner erscheint erst nach der InstallationAndroid SDL tools(obsolete
). Diese Option war für mich nicht verfügbar.Lösung: Ich habe die
Java
Version 8 auf Version 12 aktualisiert und konnte die Tools installieren. Möglicherweise wird der Fehler weiterhin angezeigt,Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses
während Sie den Befehl eingebenflutter doctor -v
. Führen Sie den Befehl ausflutter doctor --android-licenses
. Die Lizenzen werdenyes
jedes Mal überprüft, wenn Sie auf diese Frage klickenAccept? (y/N):
Hoffentlich hilft es jemandem.
quelle
Wenn Sie ein Homebrew-Fass verwenden , können Sie dies tun
quelle
Für Windows-Benutzer besteht eine kurzfristige Lösung darin, ein Downgrade auf JDK8 durchzuführen. Hoffentlich wird das Problem durch Flattern bald behoben, damit Android SDK mit> JDK8 funktioniert.
quelle
Nachdem ich viele Analysen für mein Ubuntu 20.04 durchgeführt habe, habe ich die Lösung gefunden
Für mich
/home/rk/Android/Sdk/tools/bin/sdkmanager
fehlte der Fehler Schreibberechtigung .chmod +w home/rk/Android/Sdk/tools/bin/sdkmanager
Führen Sie dann den folgenden Befehl aus.
flutter doctor --android-licenses
Die Lizenzen werden automatisch verarbeitet.
quelle
Befolgen Sie diese einfachen Schritte.
quelle
WARNUNG : Diese Antwort ist nützlich, wenn Sie Probleme mit der Umgebungsvariablen JAVA_HOME und deren Richtung haben. Wenn Sie dieses Problem nicht haben, sollten Sie diese Lösung nicht ausprobieren.
Wenn Sie diesen Fehler haben und es mit Flutter Doctor - android-licenses oder sdkmanager --licenses versucht haben und ein Problem mit Ihrer Umgebungsvariablen JAVA_HOME haben, müssen Sie dies lesen.
Ich habe eine MacOS Catalina-Ameise. Ich könnte dieses Problem mit den nächsten Schritten erfolgreich lösen:
Bitte lassen Sie mich wissen, wenn Sie Zweifel haben.
quelle
Folgendes habe ich getan, um mein Problem zu beheben. Bitte beachten Sie, dass Sie Ihre alte Kopie von Android Studio / SDK nicht deinstallieren müssen. Android Studio wird sich darum kümmern, während Sie die neueste Version installieren.
quelle