[!] Android toolchain - programowanie dla urządzeń z systemem Android (Android SDK 27.0.3)
• Android SDK a .. \ Android \ sdk • Lokalizacja Android NDK nie została skonfigurowana (opcjonalnie; przydatne do obsługi natywnego profilowania) • Platforma android-27, build-tools 27.0.3 • Java binary pod adresem: C: \ Program Files \ Android \ Android Studio \ jre \ bin \ java • Wersja Java OpenJDK Runtime Environment (kompilacja 1.8.0_152-release-1024-b02) X Status licencji na Androida nieznany.
Gdy uruchamiam Flutter Doctor, pojawia się błąd z Android Sdk, chociaż nadal mogę budować / uruchamiać na moim urządzeniu. Byłem po prostu ciekawy, jak rozwiązać ten problem. Wydaje mi się, że mam najnowszą pobraną wersję pakietu SDK dla systemu Android, nie jestem pewien, co się stało, ponieważ nie miałem tego problemu w zeszłym tygodniu.
Nowe problemy
Po wykonaniu kilku możliwych poprawek w komentarzach doprowadziło to do nowego problemu. Zainstalowałem nowsze wersje Androida SDK P, 8 i 7 wraz z nowym jdk10. Wciąż nie jest wystarczająco zaktualizowany.
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
. Nadal powiedział, że licencja musi zostać zaakceptowana. Potem pobiegłemflutter doctor --android-licenses
i powiedziałemyes
o wszystkich umowach licencyjnych. Wreszcie problem zniknął :). Take awayOdpowiedzi:
Jeśli zaktualizowałeś Android SDK, licencje mogły się zmienić. W zależności od tego, w jaki sposób dokonałeś aktualizacji, możesz zostać poproszony lub nie o zaakceptowanie zmian, a może po prostu nie oszczędza to faktu, że zaakceptowałeś je w sposób zrozumiały dla fluttera.
Aby rozwiązać ten problem, spróbuj uruchomić
Powinno to zachęcić Cię do zaakceptowania licencji (może Cię najpierw poprosić, na wypadek gdybyś po prostu wpisz
y
i naciśnij Enter - chociaż powinien ci to powiedzieć).Jeśli po wykonaniu tej czynności nadal masz problemy, warto otworzyć nowy błąd w repozytorium Flutter Github lub dodać komentarz do istniejącego problemu, takiego jak ten, ponieważ może to być to, co widzisz.
źródło
Błąd:
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
występuje, ponieważ bieżąca wersja zestawu SDK jest niezgodna z językiem Java 9.
Aby rozwiązać ten problem, możesz obniżyć wersję Java do Java 8 lub, aby obejść ten problem, możesz wyeksportować następującą opcję na terminalu:
Linux:
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Okna :
set JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
I aby go trzymać, można wyeksportować JAVA_OPTS w pliku profilu na platformie Linux (
.zshrc
,.bashrc
i itp) lub dodać jako środowiska na stałe w systemie Windows.Następnie możesz wpisać polecenie flutter lub sdkmanager:
Trzepotanie :
sdkmanager :
i wpisz Y w razie potrzeby, aby zaakceptować licencje.
ps. To nie działa dla Java 11/11 +, która nie ma modułów Java EE. W przypadku tej opcji dobrym pomysłem jest obniżenie wersji Java lub czekanie na aktualizację Fluttera .
Ref: JDK 11: Koniec drogi dla modułów Java EE
źródło
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
java.se.ee
zostało usunięte w nowszych wersjach javaWłaściwe rozwiązanie byłoby, gdybyś miał wtedy zainstalowane studio Android
Android SDK Tools (Obsolete)
flutter doctor
i powinno teraz wyświetlić monit o uruchomienieflutter doctor --android-licenses
po uruchomieniu polecenia licencji zaakceptuj wszystkie licencje, naciskając y, co powinno rozwiązać problemźródło
Piszę to z powodu frustracji przy instalacji fluttera ... Większość problemów jest spowodowana prostymi problemami z konfiguracją. Wykonaj poniższe czynności, aby rozwiązać problemy.
KROK 1: LICENCJE NA ANDROIDA - licencje na Androida rozwiążą większość przypadków
Ponieważ jesteś tutaj, dotarłeś do problemu „Nieznany stan licencji Androida” dla łańcucha narzędzi systemu Android, jak wielu sugerowało spróbować
flutter doctor --android-licenses
. Jeśli jesteś dobry z całą konfiguracją. Powinien poprosić o odpowiedź tak, a następnie nacisnąć y i Voila. Ale jeśli pokazujeNie znaleziono narzędzia sdkmanager systemu Android
(C\Users\__\local\Android\sdk\tools\bin\sdkmanager)
. Przejdź do kroku drugiegoKROK 2: Instalacja Menedżera SDK z Android Studio
Otwórz swoje Android Studio,
File-> settings->System settings(left tab) ->Android SDK,
przejdź doSDK Tool section
na tej stronie, odznacz ukryj przestarzałe pakiety, wybierzAndroid SDL tools(obsolete)
i naciśnij Zastosuj.Zainstaluje SDK i potwierdzisz to, przechodząc i sprawdzając, czy ta ścieżka istnieje
(C\Users\__\local\Android\sdk\tools\bin\sdkmanager)
KROK 3: Powtórz 1
Powtórz krok 1 po instalacji w nowym wierszu poleceń, sprawdź, czy działa, w przeciwnym razie przejdź do KROKU 4
KROK 4: sdkmanager --update
Poprosi Cię o aktualizację sdk, po prostu uruchom polecenie podane w terminalu
C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update
. Jeśli działa, to jest fajne. pozwól mu zakończyć i powtórz krok 1, w przeciwnym razie, jeśli rzuca jakieś wyjątki, takie jakjava.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
itp., oznacza to , że twoja java nie jest zainstalowana lub nie jest w poprawnej wersji. Przejdź do następnego krokuKROK 5: JAVA 8.1 i ścieżka JAVA_HOME.
Zainstaluj JAVA 8.1 i ustaw ścieżkę JAVA_HOME. Upewnij się, że jest to wersja 8.1 (zarejestruj darmowe konto i pobierz z oracle wersję 8.1, pamiętaj, że powyżej 11+ nie będzie działać dla fluttera
UWAGA : przez yaniv maymon: jeśli masz już zainstalowaną Javę na swoim komputerze, a sdkmanager --update nadal nie działa. przejdź do zmiennej środowiskowej i zaktualizuj ścieżkę „JAVA_HOME” do folderu jdk. następnie zamknij wiersz polecenia, otwórz go ponownie i uruchom polecenie aktualizacji -
KROK 6: Ostatni krok
Po prawidłowym zainstalowaniu i skonfigurowaniu ścieżki uruchom
C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update
polecenie w nowym terminalu i zadziałaKROK 7: Ponownie uruchom lekarza trzepotania , możesz zobaczyć, jak mówi, aby uruchomić polecenie
flutter doctor --android-licenses
. więc uruchomflutter doctor --android-licenses
w terminalu i naciśnij y, gdy zostaniesz o to poproszonyźródło
Oto kroki, które rozwiązują mój problem:
flutter doctor --android-licenses
y
aby zaakceptować, proces ten może wystąpić kilka razy. Gotowe!źródło
Znalazłem to rozwiązanie, ponieważ muszę używać JDK 8 (potrzebujesz konta, aby pobrać teraz!) - użyj osadzonego OpenJDK, który jest dostarczany z Android Studio:
Dodaj to do swojego
~/.profile
lub podobnego:# Use the JDK embedded with Android Studio for command-line builds export JAVA_HOME='/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home'
Kompilacje z wiersza poleceń za pośrednictwem
gradlew
i każdego innego dobrze działającego skryptu będą następnie używać wersji zestawu SDK dostarczanej z systemem Android Studio 2.2+.* Mój Mac nadal korzystał z domyślnej wersji Java 7.
źródło
To był także mój problem, tak samo jak # 16025
Dla wyjątku w wątku "main" java.lang.NoClassDefFoundError: javax / xml / bind / annotation / XmlSchema Ten problem wydaje się zwykle występować, gdy wcześniej zainstalowałeś Javę 9. BTW nie jest kompatybilny z android-sdk, spróbuj usunąć Java 9 JDK, jeśli nadal istnieje.
Rozwiązanie do obejścia, jeśli masz zainstalowaną Javę9 / 10
Zastąpić
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
Z tym
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
W przypadku nieznanego stanu licencji systemu Android próbowałem rozwiązać, wykonując następujące czynności:
Przejdź do lokalizacji Android SDK C: \ Users% user% \ AppData \ Local \ Android \ Sdk \ tools \ bin lub ~ / Library / Android / sdk / tools / bin
Uruchom polecenie: ./sdkmanager --license
Bibliografia
Nie udało się uruchomić sdkmanager --list (Android SDK) z Javą 9
Jak rozwiązać problem java.lang.NoClassDefFoundError: javax / xml / bind / JAXBException w Javie 9
źródło
Ta linia podana w społeczności GitHub rozwiązała mój problem, tutaj na wszelki wypadek pomoże to komukolwiek innemu.
@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%
źródło
oto moje rozwiązanie:
zainstaluj SDKMan
$ curl -s "https://get.sdkman.io" | bash
ustawianie profilu bash_profile
$ source "$HOME/.sdkman/bin/sdkman-init.sh
$ source ~/.bash_profile
znajdź sdk java i wybierz, czy chcesz zainstalować wersję
$ sdk ls java
$ sdk install java 8.0.192-zulu
skopiuj ostrzeżenie lekarza flutter, aby zaktualizować sdkmanager
$ /Users/YourUserName/Library/Android/sdk/tools/bin/sdkmanager --update
po 1 ~ 4, powtórz to
$ flutter doctor --android-licenses
źródło
Wystarczy zainstalować narzędzie wiersza poleceń sdk (najnowsze) poniżej w Android Studio.
źródło
flutter doctor --android-licenses
MacOS 10.15: Android Studio 3.5.1:
Rozwiązaniem, które działało u mnie, było użycie narzędzia Java Environment
jenv
(instalowanego przez homebrew ). To narzędzie zmienia katalog $ JAVA_HOME, gdy przełącza się między wersjami Java.W moim przypadku mam zainstalowanych wiele wersji Java, a bieżąca używana wersja globalna była domyślna. Zauważyłem również, że podczas korzystania z tego narzędzia konieczne jest wykomentowanie zmiennej środowiskowej $ JAVA_HOME w moim
.bash_profile
.W Terminalu wszedłem,
jenv global 1.8
aby uruchomić java 1.8 zamiast późniejszej wersji (mam zainstalowanych wiele wersji).Po tym:
flutter doctor --android-licenses
LUB
sdkmanager --licenses
oba działają dobrze.
źródło
Skierować-- https://robbinespu.gitlab.io/blog/2020/03/03/flutter-issue-fixed-android-license-status-unknown-on-windows/
Oto rozwiązanie: otwórz menedżera SDK, a następnie odznacz
Hide Obsolete Packages
Teraz zobaczysz, że
Android SDK Tools (Obsolete) 26.1.1
pojawi się. Zaznacz ten pakiet i naciśnijapply button
przycisk OK. pobierze plik sdk. następnierestart
studio AndroidFajnie, teraz jeśli biegniesz
flutter doctor
, powinieneś uzyskać pozytywny wynik jak poniżejPS 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...
Uruchom
flutter doctor --android-licenses
i wpisz Y, gdy zostaniesz o to zapytanyw razie potrzeby możemy pobrać pakiet ręcznie tutaj https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip (dla użytkownika Windows). Mam nadzieję, że ten samouczek pomoże ludziom, którzy szukają rozwiązania
źródło
Dla tych z Was, którzy korzystają z Linuksa i ciągle otrzymują błędy podczas
flutter doctor --android-licenses
.Ciągle otrzymywałem ostrzeżenie nie można utworzyć ustawień podczas próby zaakceptowania licencji, które naprawiłem, określając lokalizację SDK:
Następnie Sdkmanager wydrukował: zaakceptowano wszystkie licencje pakietu SDK.
Jednak Flutter nadal podawał nieznany błąd statusu licencji Androida . A próba połączenia
flutter doctor --android-licenses
dałaby mi to samo, nie mogłem utworzyć błędu ustawień , który otrzymałem.Aby to naprawić, wyedytowałem
sdkmanager
skrypt znajdujący się w $ {lokalizacja twoich narzędzi Androida} / tools / bin / i zmieniłem ostatnią linię z:exec "$JAVACMD" "$@"
Do:
exec "$JAVACMD" "$@" --sdk_root=/home/adel/bin/android-sdk
To spowodowałoby, że Flutter wywołałby sdkmanager podczas przekazywania potrzebnego argumentu sdk_root, ostatnie wezwanie do naprawienia
flutter doctor --android-licenses
problemu.Nie musiałem używać Javy 8.
źródło
otwórz plik flutter_console.bat z folderu głównego flutter SDK i uruchom polecenie
zaakceptuje licencje na nowo pobrane aktualizacje Android SDK. Musisz go uruchamiać za każdym razem, gdy pobierasz i aktualizujesz Android SDK.
źródło
Spróbuj obniżyć wersję java , stanie się to, gdy wersja Java twojego systemu nie jest kompatybilna z wersją z Androida. Po zmianie wersji java po prostu uruchomiona
flutter doctor
, automatycznie zaakceptuje licencje.źródło
Zdegradowałem moją wersję Javy do 1.8 i została rozwiązana, tutaj jest link do pobrania JDK8
Uruchom następujące polecenie po zainstalowaniu JDK8
źródło
Moje środowisko: Windows 10 64bit, OpenJDK 14.0.2
Początkowe błędy opisano powyżej.
Błąd został rozwiązany po
źródło
W moim przypadku brakowało problemu
Android SDK Command-line tools
źródło
Ten sam problem co do mnie, sprawdź swoją wersję java przynajmniej musi to być 1.8
źródło
AndroidSDK
.źródło
Dla kogoś, kto wciąż boryka się z tym problemem :
jak odpowiedział poniżej Tommie C, Aba i kilka innych osób, ale może nie być wystarczająco jasne, jak je znalazłem.
Spróbuj ręcznie zainstalować Javę 1.8, jak opisano tutaj na windows / linux: [ https://www3.ntu.edu.sg/home/ehchua/programming/howto/JDK_Howto.html]
i ustaw zmienną $ JAVA_HOME (ścieżka jdk).
W systemie Windows ustaw ścieżkę jdk ($ JAVA_HOME): [ Jak ustawić java_home w systemie Windows 7? .
W systemie Linux: [ /ubuntu/175514/how-to-set-java-home-for-java] .
Następnie uruchom
flutter doctor --android-licenses
i zaakceptuj wszystkie licencje. Mam nadzieję, że to pomoże.źródło
Znalazłem to rozwiązanie, pobieram JDK 8, następnie dodaję ścieżkę pobierania pliku jdk JAVA_HOME do zmiennych użytkownika w zmiennej środowiskowej.
źródło
Napotkałem ten sam problem, jak wspomniano powyżej, wypróbowałem te.
Oto, co zadziałało dla mnie:
flutter doctor --android-licenses
i wybierzy
aby wyświetlić monityflutter doctor
i wszystko będzie dobrze !!!!źródło
Miałem problem.
tools
Folder został również brakuje wAndroid SDK
folderze. Myślę, żetools
folder pojawia się dopiero po zainstalowaniuAndroid SDL tools(obsolete
). Ta opcja nie była dla mnie dostępna.Rozwiązanie: zaktualizowałem
Java
z wersji 8 do wersji 12 i mogłem zainstalować narzędzia. Nadal możesz otrzymać błądSome Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses
podczas wydawania poleceniaflutter doctor -v
. Uruchom polecenieflutter doctor --android-licenses
, licencje zostaną przejrzane po kliknięciuyes
każdym gdy pojawi się to pytanieAccept? (y/N):
Miejmy nadzieję, że to komuś pomoże.
źródło
Jeśli używasz beczki domowej roboty, możesz to zrobić
źródło
Dla użytkowników Windows krótkoterminowym rozwiązaniem jest przejście na wersję JDK8. Miejmy nadzieję, że flutter wkrótce rozwiąże problem, aby Android SDK działał z> JDK8.
źródło
Po przeprowadzeniu wielu analiz dotyczących mojego Ubuntu 20.04 znalazłem rozwiązanie
dla mnie
/home/rk/Android/Sdk/tools/bin/sdkmanager
brakowało pozwolenia na zapis .chmod +w home/rk/Android/Sdk/tools/bin/sdkmanager
Następnie uruchom poniższe polecenie.
flutter doctor --android-licenses
automatycznie przetwarza licencje.
źródło
Wykonaj te proste kroki.
źródło
OSTRZEŻENIE : Ta odpowiedź jest przydatna, jeśli masz problemy ze zmienną środowiskową JAVA_HOME i jej kierunkiem. Jeśli nie masz tego problemu, nie powinieneś próbować tego rozwiązania.
Jeśli masz ten błąd i próbowałeś z flutter doctor --android-license lub sdkmanager --licenses i masz problem ze zmienną środowiskową JAVA_HOME, musisz to przeczytać.
Mam komputer MacOS Catalina i mogę pomyślnie rozwiązać ten problem, wykonując następujące czynności:
Proszę, daj mi znać, jeśli masz wątpliwości.
źródło
Oto, co zrobiłem, aby rozwiązać problem. Pamiętaj, że nie musisz odinstalowywać starej kopii Android Studio / SDK. Android Studio zajmie się tym podczas instalacji najnowszej wersji.
źródło