Od wersji Androida 2.2-alpha4 :
Gradle spróbuje pobrać brakujące pakiety SDK, od których zależy projekt
Co jest niesamowicie fajne i było znane z projektu JakeWharton .
Ale aby pobrać bibliotekę SDK, musisz: zaakceptować umowy licencyjne lub gradle powie ci:
Nie zaakceptowałeś umów licencyjnych następujących komponentów SDK: [Android SDK Build-Tools 24, Android SDK Platform 24]. Przed zbudowaniem projektu musisz zaakceptować umowy licencyjne i dokończyć instalację brakujących komponentów za pomocą Menedżera SDK systemu Android Studio. Ewentualnie, aby dowiedzieć się, jak przenieść umowy licencyjne z jednej stacji roboczej na drugą, przejdź na stronę http://d.android.com/r/studio-ui/export-licenses.html
Jest to problem, ponieważ podczas instalacji chciałbym zainstalować wszystkie zależności SDK gradle build
.
Szukam rozwiązania, które automatycznie zaakceptuje wszystkie licencje. Może skrypt stopniowy? Czy masz jakies pomysły ?
Dzięki!
[EDYTOWAĆ]
Rozwiązaniem było wykonanie:
android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository
I zainstaluj go ręcznie, ale jest to nowy cel funkcji tego stopnia.
[EDYCJA 2]
Lepszym rozwiązaniem jest użycie sdkmananger:
yes | sdkmanager --licenses
echo y |
przed tym poleceniem, aby automatycznie zaakceptować licencję. Przydatne, gdy działa się na bezgłowym pudełku CI :)~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repository
ponieważandroid
narzędzie zostało zlokalizowane w moim domu$ANDROID_SDK_PATH
do rzeczywistego toru głównego, w którym masz zainstalowanego SDK (tj/opt/android-sdk
), lub po prostu umieścić ścieżkę bezpośrednio (tjyes | sdkmanager --licenses --sdk_root=/opt/android-sdk
)Odpowiedzi:
AndroidSDK może wreszcie zaakceptować licencje.
EDYTOWAĆ:
jak wskazano w komentarzach @MoOx, na macOS możesz to zrobić
yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
jak wskazano w komentarzach @pho, @mebebridge i @ Noitidart w systemie Windows, możesz to zrobić
cmd.exe ""/K"%LocalAppData%\Android\sdk\tools\bin\sdkmanager.bat --licenses"
pamiętaj, aby zainstalować java wcześniej
źródło
C:\Users\x1\AppData\Local\Android\sdk\tools\android
następnie otworzyło się GUI, a następnie zainstalowało brakujące, a następnie kliknęło „Zaakceptuj Liscenses” w nowym oknie dialogowym, które się pojawi.yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
Spotkałem to z
alpha5
podglądem.Jake Wharton zwrócił mi uwagę, że obecnie możesz go używać
aby odtworzyć bieżący
$ANDROID_HOME/license
folder na twoim komputerze. Wynik byłby taki sam, jak proces opisany w linku błędu msg ( http://tools.android.com/tech-docs/new-build-system/license ).Skróty to sha1s tekstu licencji, który, jak sądzę, będzie okresowo aktualizowany, więc ten kod będzie działał tylko tak długo :)
Na początku byłem zaskoczony, że nie zadziałało to po wyjęciu z pudełka, nawet gdy zaakceptowałem licencje dla nazwanych komponentów za pomocą
android
narzędzia, ale wskazano mi, że to menedżer SDK w AS, który tworzy/licenses
folder.Wydaje mi się, że oficjalne narzędzia nie chciałyby pominąć tego kroku ze względów prawnych.
Ponownie czytając informacje o wersji, stwierdza
Co nie znaczy, że będzie działać, jeśli nie zainstalowałeś jeszcze narzędzi Androida i zaakceptowałeś już najnowsze licencje.
EDYCJA: Mówiąc to, nadal nie działa na moim testowym pudełku gubuntu, dopóki nie połączę SDK z AS. CI działa jednak dobrze - nie jestem pewien, jaka jest różnica ...
źródło
mkdir -p
zamiast|| true
.echo
:echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"
. Ale myślę, że twój problem kryje się gdzie indziej.W najnowszym Android Studio (2.3) najlepszym sposobem na aktualizację / akceptację wszystkich licencji jest uruchomienie:
nadal może być konieczne skopiowanie plików licencji do innych lokalizacji w zależności od konfiguracji.
źródło
tools/bin/sdkmanager --licenses
yes
jakoś przesłać do tego polecenia w przypadku automatycznych systemów kompilacji? Nie zawsze będziesz mieć interaktywny dostęp do konsoli tych komputerów, więcy
fizyczne naciśnięcie klawiatury nie będzie działać.cd $ANDROID_HOME
przed wykonaniem tego poleceniaW przypadku nowego
sdkmanager
narzędzia:yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"
Jest trochę opóźnienia między tak, więc polecenie mogło zawiesić się z wyświetloną licencją przez jakiś czas, ale nie wymaga interwencji człowieka.
źródło
up-to-date
odpowiedzią. Wygląda na--licenses
to, że już nie istnieje. Uwaga: aby zobaczyć listę możliwych wersji, które można dostarczyć:$ANDROID_HOME/tools/bin/sdkmanager --list
yes | android-sdk-linux/tools/bin/sdkmanager --licenses || true
w moim CI.Jeśli używasz Jenkinsa, możesz użyć następującego skryptu bash jako pierwszego kroku w procesie kompilacji:
To oczywiście zainstaluje WSZYSTKIE dostępne aktualizacje, ale pozwoli ci zaoszczędzić trochę czasu, jeśli możesz zaoszczędzić miejsce na dysku. Uśpienie polega na uniknięciu zepsutego odczytu w programie instalacyjnym, ponieważ „tak” w tym przypadku nie działa poprawnie.
EDYCJA: Musisz również dodać wtyczkę „Zainstaluj wymagania wstępne projektu Androida” w kroku kompilacji, aby uzyskać poprawny $ ANDROID_HOME, jeśli używasz wbudowanego menedżera SDK.
źródło
Niestety sposób, w jaki pierwotnie rozwiązano OP, nie zawsze działa. Jeśli z komunikatu o błędzie dowiesz się, jaka jest twoja wersja bieżącej kompilacji narzędzi . Możliwe, że brakuje wyższej wersji narzędzi do budowania. W takim przypadku musisz ręcznie uruchomić Menedżera SDK, dodać narzędzia do budowania i zaakceptować licencję.
Według instrukcji OP wygląda to następująco.
$ ./gradlew build
Następnie dostosuj polecenie w następujący sposób:
Ponownie uruchamiając to, nadal nie uszczęśliwia Gradle'a. Ręczna akceptacja jest więc jedynym rozwiązaniem, dopóki ktoś nie wymyśli czegoś lepszego. (Proszę zrób!)
źródło
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
uruchomienie tego za pomocą wiersza polecenia z uprawnieniami administratora naprawiło błąd. Nie mogłem zainstalować menedżera wtyczekto rozwiązało mój błąd
źródło
yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
robi to samo.Znaleźliśmy ten sam problem podczas tworzenia projektu na Jenkins. Z
buildToolsVersion '25.0.2'
musimy zaakceptować licencje przed budowaniem. W naszym przypadku musieliśmy uruchomić:yes | sdkmanager --update
który akceptuje licencje dla samego sdkmanager, a następnieyes | sdkmanager --licenses
który akceptuje nowe licencje, które nie zostały wcześniej zaakceptowanePamiętaj: uruchom te komendy z tym samym użytkownikiem co on
jenkins
. W naszym Debianie użytkownik Jenkins jest po prostujenkins
. Innymi słowy: robienie tego, coroot
spowoduje utworzenie zaakceptowanych licencjiroot
, aby Jenkins ich nie czytał.Nawiasem mówiąc, znaleźliśmy
sdkmanager
na/var/lib/jenkins/tools/android-sdk/tools/bin
. Jeśli twojego tam nie ma, znajdź to za pomocąfind / -name "sdkmanager"
źródło
android
Narzędzie jest przestarzałe i należy użyćsdkmanager
zamiast.sdkmanager
zapisuje również plik licencji przy jego pierwszym zaakceptowaniu. Licencja zmienia się w zależności od używanego zestawu SDK, nawet pomimo poleceniadziała na niektórych systemach. To nie zadziała na wszystkich. Niektóre instalacje SDK oczekują, że plik licencji zakończy się bez nowego wiersza w pliku, więc spróbuj dodać
-n
polecenie do polecenia echo.Jeśli to nie działa, możesz zamiast tego spróbować użyć kodowania base64.
Aby odkryć moją licencję:
Poprosi Cię o zaakceptowanie licencji. Po zaakceptowaniu skopiuje go do
${ANDROID_HOME}/licenses/android-sdk-license
. Aby mieć pewność, że zawsze otrzymasz dokładnie to, co jest zapisanebase64
.Następnie możesz
base64 -d
dokładnie odtworzyć plik.Możesz sprawdzić, czy zapisany plik jest zgodny z oczekiwaniami, uruchamiając na nim plik sha1sum.
źródło
jeśli uruchomisz
yes | sdkmanager --licenses
, wówczas drukujemy zawartość$ANDROID_HOME/licenses/android-sdk-license
,dostaniemy to
Aby GitLab CI mógł zaakceptować licencje Build-Tools 26.0.2 dla pakietu SDK systemu Android, musisz go uruchomić
źródło
$ANDROID_HOME/licenses/android-sdk-license
czy to jest zamierzone? to znaczy. dołączamAndroid SDK Build-Tools 26.02
dodaje , dodano nowy ciąg licencji sha1Build-Tools 26.0.2
i nasza kompilacja się zepsuła. Moim końcowym rozwiązaniem było po prostu zrobićyes | sdkmanager --licenses
. Nieecho
są potrzebne, a to jest dowód na przyszłość.Zauważ, że dla każdego, kto obecnie podejdzie do tego pytania, build-tools-24.0.2 jest (myślę) teraz uważany za przestarzały, więc otrzymasz:
podczas uruchamiania różnych poleceń, które zostały sugerowane do ich zainstalowania.
Rozwiązaniem jest dodanie
--all
:Również jeśli korzystasz z 32-bitowego systemu Linux, wszystko po narzędziach do kompilacji 23.0.1 jest tylko 64-bitowe , więc nie będzie działać. Użytkownicy 32-bitowi utknęli na 23.0.1, jedynym sposobem na uzyskanie narzędzi do późniejszej kompilacji jest przejście na wersję 64-bitową.
źródło
25.0.1
.Jeśli używasz
tools/bin/sdkmanager --licenses
, nadal potrzebujesz interakcji międzyludzkiej. Mam problem z używaniem CI gitlab. To jest moje rozwiązanie:echo y
powie „tak”, jeśli pojawi się jakieś pytanie, ale musisz utworzyć jedną linię na pakiet instalacyjnyźródło
Możesz także wykonać:
W systemie Windows wykonaj:
źródło
W przypadku komunikatu o błędzie dotyczącego interfejsu API zestawu SDK nr 25:
android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository
źródło
OK DLA KAŻDEGO MAJĄCEGO TEGO PROBLEM OD 2018 R. Powyższe odpowiedzi wcale mi nie działały. Czym DID było otwarcie Android SDK - kliknięcie przycisku POBIERZ na pasku narzędzi i wybranie odpowiednich pakietów. Po zakończeniu pobierania pozwoli Ci zaakceptować umowę licencyjną.
źródło
Rozwiązałem ten problem, tworząc publiczne repozytorium git z zaakceptowanymi plikami licencji. Następnie używam
wget
do pobierania tych licencji na dowolnym komputerze, którego potrzebuję, do katalogu [sdk-dir] / licencje przed uruchomieniem ./gradlew, aby zbudować mój projekt.źródło
W przypadku problemów z zestawem SDK wiersza polecenia powodem, dla którego nie może znaleźć zaakceptowanych licencji, jest fakt, że zostały zapisane w innym miejscu niż
$ANDROID_HOME/licenses
to, w którym muszą być.Odkryłem, że najłatwiejszym rozwiązaniem było zaakceptowanie takich licencji:
$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME
Uwaga: Zakłada się, że ustawiono
ANDROID_HOME
wskazywanie gdziekolwiek jest zainstalowany sdk.źródło
cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update
lub
yes | $ANDROID_HOME/tools/bin/sdkmanager --update
źródło
w systemie Windows otwórz cmd i wejdź do
bin
katalogu, uruchamiając polecenie:następnie uruchom
sdkmanager --licenses
polecenie, prosi o zaakceptowanie licencji.źródło
Error: Unknown argument --licenses
W końcu znalazłem rozwiązanie w systemie Windows, aby mieć naprawdę cichą i automatyczną instalację:
W systemie Windows następująca składnia nie działa:
Wygląda na to, że „y” nie zostało poprawnie wysłane do programu Java wywołanego w partii.
Obejściem tego problemu jest utworzenie pliku file-y.txt z kilkoma „y”, jeden po wierszu, i użycie
Spowoduje to utworzenie potrzebnych plików w katalogu licencji. Problem jest prawdopodobnie związany z użyciem BufferedReader w Javie
źródło
Skopiuj cały katalog licencji / i wklej go do katalogu głównego zestawu SDK systemu Android na komputerze, na którym chcesz budować swoje projekty.
https://developer.android.com/studio/intro/update.html#download-with-gradle
to rozwiązało problem dla mnie
źródło
W Windows PowerShell możesz to zrobić
Jest to o wiele bardziej elastyczne i nie wymaga ręcznej interwencji. Liczba 30 jest dowolna, powinna wystarczyć na pokrycie liczby akceptacji licencji, ale w razie potrzeby można ją zwiększyć
źródło
Miałem ten sam błąd podczas korzystania z Cordova.
Problemem było to, ze względu na fakt, że zainstalowany Android SDK przez Android Studio i przez
apt
zapt install android-sdk adb
. A Cordova dzwoniła do plików zainstalowanychapt
zamiast plików w moim katalogu domowym.Działa, gdy zmieniłem ścieżkę do SDK w bash:
Potem usunięte pliki systemowe, które nie były już używane:
apt remove android-sdk adb
.źródło
Oto moja konfiguracja Dockera.
Możesz korzystać ze zwykłego środowiska Linux.
Zauważ, że
yes |
i--licenses --sdk_root=${ANDROID_HOME}
klauzule.Wydaje się, że
sdkmanager --update
odwraca umowy, więcyes |
pojawił się dwa razy.źródło
Możesz zaakceptować całą licencję, wykonując następujące polecenie:
Spowoduje to wyświetlenie monitów o każdą licencję, której jeszcze nie zaakceptowałeś i możesz po prostu wejść,
y
aby zaakceptować każdą z nich.źródło
Wypróbowałem wszystkie powyższe polecenia na komputerze z systemem Windows 10, ale rozwiązaniem było użycie SDKMANAGER do sprawdzania i akceptowania licencji zakupu instalacji brakujących wersji
źródło
Ta ścieżka została zmieniona w ostatnich wersjach.
./sdkmanager
jest teraz,/Library/Android/sdk/cmdline-tools/latest/bin
a potem po prostu zróbźródło
Uwaga: dotyczy tylko użytkowników komputerów Mac
Miałem ten sam problem, ale żadna z zamieszczonych odpowiedzi nie pomogła, ponieważ w
tools
folderze nie było folderuLibrary/Android/sdk.
(używam Androida 3.6.3 w systemie Mac OS 10.14.4)Poniższe kroki pomogły mi rozwiązać problem z licencją:
Android Studio
cmd + shift + A
. OtworzyActions
się okno podręczne.SDK Manager
i naciśnij klawisz Enter, aby otworzyć.Android SDK
. Wybierz inną wersję Androida niż już zainstalowana. (W moim przypadku Android 10.0 był już zainstalowany, więc wybrałem Androida 9.0)Apply
przycisk. Spowoduje to zainstalowanie odpowiedniego zestawu SDK.źródło
biegnę
z terminala i spotkałem ten problem. Aby ręcznie, przejdź do Android Studio -> Android SDK -> Platforma SDK Kliknij Pokaż szczegóły pakietów i sprawdź:
Podczas instalowania pakietów zaznacz opcję zaakceptuj licencję => może rozwiązać problem.
źródło
W systemie Mac OSX przejdź do
sdk/tools/bin
Następnie uruchom
./sdkmanager --licenses
i zaakceptuj wszystkie licencje.źródło