[!] Android toolchain - développer pour les appareils Android (Android SDK 27.0.3)
• SDK Android a ..\Android\sdk • Emplacement du NDK Android non configuré (facultatif; utile pour la prise en charge du profilage natif) • Plate-forme Android-27, outils de compilation 27.0.3 • Fichier binaire Java sur: C:\Programmes\Android\Android Studio\jre\bin\Java • Version Java OpenJDK Runtime Environment (version 1.8.0_152-release-1024-b02) X Statut de la licence Android inconnu.
Je reçois une erreur avec Android Sdk lorsque je lance Flutter doctor, bien que je puisse toujours créer/exécuter mon appareil. J'étais juste curieux de savoir comment résoudre ce problème. Je pense avoir la version la plus mise à jour du sdk Android téléchargée, mais je ne suis pas sûr de ce qui est arrivé car je ne connaissais pas ce problème la semaine dernière.
Après avoir suivi plusieurs corrections possibles dans les commentaires, cela a entraîné un nouveau problème. J'ai installé de nouvelles versions d'Android sdk P, 8 et 7 avec un nouveau jdk10. Toujours pas assez mis à jour apparemment.
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:\Utilisateurs\Nom d'utilisateur\Appdata\Local\Android\Outils\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
Si vous avez mis à jour le SDK Android, les licences ont peut-être changé. En fonction de la manière dont vous avez effectué la mise à jour, vous avez peut-être été invité à accepter les modifications, ou peut-être que cela ne vous empêchera pas de savoir que vous les avez acceptées d'une manière que le flutter peut comprendre.
Pour résoudre le problème, essayez d'exécuter flutter doctor --Android-licenses
. Cela devrait vous inciter à accepter les licences (il peut vous demander d’abord, au cas où il vous suffirait de taper y
et d’appuyer sur Entrée - bien que cela devrait vous dire cela).
Si vous rencontrez toujours des problèmes après cela, il pourrait être intéressant d’ouvrir un nouveau bogue dans le référentiel Flutter Github ou d’ajouter un commentaire sur un problème existant tel que this , car il peut s'agir de re voir.
Voici les étapes qui résolvent mon problème:
flutter doctor --Android-licenses
y
pour accepter, ce processus peut avoir lieu plusieurs fois. Terminé!L'erreur:
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
se produit car la version actuelle du SDK est incompatible avec Java 9.
Pour résoudre ce problème, vous pouvez rétrograder votre version de Java vers Java 8 ou, avec une solution de contournement, vous pouvez exporter l'option suivante sur votre terminal:
Linux:
export Java_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee'
Les fenêtres :
set Java_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee'
Et pour que cela fonctionne, vous pouvez exporter Java_OPTS dans votre fichier de profil sous linux (.zshrc
, .bashrc
et etc.) ou ajouter un environnement en permanence sous Windows.
Ensuite, vous pouvez taper la commande Flutter ou sdkmanager:
Battement :
flutter doctor --Android-licenses
sdkmanager :
sdkmanager --licenses
et tapez Y si nécessaire pour accepter les licences.
C'était aussi mon problème même/ # 16025
Pour une exception dans le fil "principal" Java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema Ce problème semble se produire généralement lorsque vous avez déjà installé Java 9. BTW ce n'est pas compatible avec Android-sdk essayez de supprimer Java 9 JDK s'il existe toujours.
En général, les API JAXB sont considérées comme des API Java EE et, par conséquent, ne sont plus contenus dans le chemin de classe par défaut dans Java SE 9. Java 9 introduit les concepts de modules, et par défaut le fichier Java.se Le module d'agrégat est disponible sur le chemin de classe (ou plutôt, module chemin). Comme son nom l'indique, le module d'agrégat Java.se ne le fait pas inclure les API Java EE qui ont été traditionnellement associées à Java 6/7/8. Heureusement, ces API Java EE fournies dans Les JDK 6/7/8 sont toujours dans le JDK, mais ils ne sont tout simplement pas sur le chemin de classe par défaut. Les API Java EE supplémentaires sont fournies dans la suite modules
Solution à la solution de contournement si vous avez installé Java9/10
Remplacer
DEFAULT_JVM_OPTS='"-Dcom.Android.sdklib.toolsdir=$APP_HOME"'
Avec celui-ci
DEFAULT_JVM_OPTS='"-Dcom.Android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee'
Pour le statut inconnu de la licence Android, j'ai essayé de résoudre le problème en procédant comme suit:
Accédez à l'emplacement de votre SDK Android C:\Utilisateurs% utilisateur%\AppData\Local\Android\Sdk\tools\bin ou ~/Bibliothèque/Android/sdk/tools/bin
Exécutez la commande: ./sdkmanager --license
Références
Échec de l'exécution de sdkmanager --list (SDK Android) avec Java 9
Comment résoudre Java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException dans Java 9
Cette ligne fournie sur la communauté de problèmes GitHub a corrigé mon problème, la voici au cas où cela aiderait quelqu'un d'autre.
@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%
voici ma solution:
installer SDKMan
$ curl -s "https://get.sdkman.io" | bash
paramétrer votre bash_profile
$ source "$HOME/.sdkman/bin/sdkman-init.sh
$ source ~/.bash_profile
trouver Java SDK, et sélectionnez vouloir installer la version
$ sdk ls Java
$ sdk install Java 8.0.192-zulu
copiez le message d’avertissement de votre médecin pour mettre à jour sdkmanager
$ /Users/YourUserName/Library/Android/sdk/tools/bin/sdkmanager --update
après 1 ~ 4, le refaire
$ flutter doctor --Android-licenses
Même problème pour moi, vérifiez votre version de Javaau moins, il doit être 1.8
AndroidSDK
.ouvrez le fichier flutter_console.bat à partir du dossier racine du SDK flutter et exécutez la commande
flutter doctor --Android-licenses
il acceptera les licences des mises à jour nouvellement téléchargées du SDK Android. Vous devez l'exécuter à chaque fois que vous téléchargez et mettez à jour le SDK Android.