Automatycznie akceptuj wszystkie licencje SDK

441

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
nsvir
źródło
12
Możesz także wstawić echo y |przed tym poleceniem, aby automatycznie zaakceptować licencję. Przydatne, gdy działa się na bezgłowym pudełku CI :)
Dori
3
Musiałem to zrobić, ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryponieważ androidnarzędzie zostało zlokalizowane w moim domu
Jacksonkr
7
sdkmanager - licencje już nie działają. Użyłem --upgrade, zignorowałem błędy i to rozwiązało problemy z licencją.
jcsubmit
6
Użyłem tego polecenia do skryptu budowania środowiska CI z niewielkimi zmianami. Dodałem --sdk_root = $ ANDROID_SDK_PATH. Problem polegał na tym, że licencje zostały zaakceptowane i nie zostały zapisane w folderze głównym zestawu SDK systemu Android. Ostateczne polecenie: tak | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (bez sudo)
adi9090 16.04.18
3
Pamiętaj, aby mieć ustawiony $ANDROID_SDK_PATHdo rzeczywistego toru głównego, w którym masz zainstalowanego SDK (tj /opt/android-sdk), lub po prostu umieścić ścieżkę bezpośrednio (tj yes | sdkmanager --licenses --sdk_root=/opt/android-sdk)
GMC

Odpowiedzi:

365

AndroidSDK może wreszcie zaakceptować licencje.

yes | sdkmanager --licenses

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

nsvir
źródło
4
W Wdowie musiałem przejść do Uruchom, a C:\Users\x1\AppData\Local\Android\sdk\tools\androidnastę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.
Noitidart,
8
To nie działa na Linuksie. Nie ma pliku sdkmanager w katalogu tools / bin dir lub w innym miejscu. Czy możesz mi pomóc?
Mehmed Mert
36
Na MacOS możesz to zrobićyes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx
5
Jak mogę automatycznie akceptować licencje z poziomu opakowania?
Howard Swope
7
głosuj na @Noitidart dla ścieżki, ale to nie zadziałało, musiałem uruchomić C: \ Users \ x1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager - licencje z wiersza polecenia i naciśnij „y „+ Wprowadź monity
GaneshT
177

Spotkałem to z alpha5podglądem.

Jake Wharton zwrócił mi uwagę, że obecnie możesz go używać

mkdir -p "$ANDROID_SDK/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_SDK/licenses/android-sdk-preview-license"

aby odtworzyć bieżący $ANDROID_HOME/licensefolder 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 :)

I zainstaluj go ręcznie, ale jest to nowy cel funkcji tego stopnia.

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ą androidnarzędzia, ale wskazano mi, że to menedżer SDK w AS, który tworzy /licensesfolder.

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

Automatyczne pobieranie SDK: Gradle spróbuje pobrać brakujące pakiety SDK, od których zależy projekt.

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 ...

Dori
źródło
Istnieje niewielka usterka w funkcji sdkDownload dotycząca niektórych składników, np. Support-v4. To będzie aktualizować składniki, ale nie będzie widać Gradle aktualizacji aż do następnego wywołania. Jedno obejście, aby wykonać grad dwa razy, raz wyrzucić: zależności gradate || true - code.google.com/p/android/issues/detail?id=212309
Joe Bowbeer 17.10.16
6
możesz użyć mkdir -pzamiast || true.
seniorgod
Działa, dziękuję za tę usterkę, dobrze wiedzieć. Aby sprawdzić, czy ścieżka SDK jest zdefiniowana zgodnie z oczekiwaniami: echo $ ANDROID_SDK
tryp
W moim środowisku ANDROID_SDK nie jest zdefiniowane, ale działa z ANDROID_HOME
Dimitri L.
5
@stack_ved: Właśnie dodałem kolejny echo: echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license". Ale myślę, że twój problem kryje się gdzie indziej.
Paul
132

W najnowszym Android Studio (2.3) najlepszym sposobem na aktualizację / akceptację wszystkich licencji jest uruchomienie:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

nadal może być konieczne skopiowanie plików licencji do innych lokalizacji w zależności od konfiguracji.

bgies
źródło
To wygląda na najlepszą drogę i działa na wszystkich platformach, po prostu uruchomtools/bin/sdkmanager --licenses
jnv 24.04.17
Jeśli masz stary menedżer SDK - licencje nie będą działać. Konieczne jest skopiowanie folderu narzędzi do innej lokalizacji, a następnie użycie opcji --sdk_root = i skierowanie go do folderu sdk, aby można było zaktualizować narzędzia do nowszej wersji.
Mirek Michalak,
czy możemy yesjakoś 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ęc yfizyczne naciśnięcie klawiatury nie będzie działać.
void.pointer
Czy ktoś może mi pomóc, jak wdrożyć to rozwiązanie? Musisz dodać tę linię w build.sh?
stack_ved
1
zadziałało to dla mnie, ale musiałem to zrobić cd $ANDROID_HOMEprzed wykonaniem tego polecenia
Inus Saha
57

W przypadku nowego sdkmanagernarzę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.

A. Rager
źródło
W mojej instalacji debian9 mam tylko plik sdkmanager.jar: android-sdk-linux / tools / lib / sdkmanager.jar i # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar Błąd: właściwość katalogu narzędzi nie jest ustawiony, upewnij się, że uruchamiasz Androida
user3313834,
1
Jest to oparte na założeniu, że pobrałeś narzędzia SDK jako archiwum od Google i rozpakowałeś je w $ ANDROID_HOME
A. Rager
To wydaje się najbardziej up-to-dateodpowiedzią. Wygląda na --licensesto, że już nie istnieje. Uwaga: aby zobaczyć listę możliwych wersji, które można dostarczyć:$ANDROID_HOME/tools/bin/sdkmanager --list
Marinos An
2
Dzięki za podpowiedź. Skończyło się na użyciu yes | android-sdk-linux/tools/bin/sdkmanager --licenses || truew moim CI.
iSWORD,
es | $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; 28.0.3" -> zmiana wersji działała dla mnie. Dzięki !
ishab acharya
43

Jeśli używasz Jenkinsa, możesz użyć następującego skryptu bash jako pierwszego kroku w procesie kompilacji:

(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u

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.

kruk
źródło
Dodałem twój wiersz kodu przed „cordova platform add android” w mojej wersji jenkins, która działa na Ubuntu, ale wciąż pojawia się następujący błąd: BUILD FAILED w 7s Błąd: / var / lib / jenkins / workspace / qa_global_php / platform / android / gradlew : Komenda nie powiodła się z kodem wyjścia 1 Błąd wyjścia: BŁĄD: Kompilacja nie powiodła się z wyjątkiem. * Co poszło nie tak: Wystąpił problem podczas konfigurowania projektu root „android”. > Nie zaakceptowałeś umów licencyjnych następujących komponentów SDK:
Ashish Karpe,
[Android SDK Build-Tools 26.0.2]. Przed zbudowaniem projektu musisz zaakceptować umowy licencyjne i dokończyć instalację brakujących komponentów za pomocą Menedżera SDK systemu Android Studio.
Ashish Karpe,
32

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

 
Aby uhonorować ustawienia JVM dla tej kompilacji, zostanie rozwidlona nowa JVM. Proszę rozważyć użycie demona: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

BŁĄD: kompilacja nie powiodła się z wyjątkiem.

* Co poszło nie tak:
Wystąpił problem podczas konfigurowania projektu „: aplikacja”.
> Nie zaakceptowałeś umów licencyjnych następujących komponentów SDK:
  [Android SDK Build-Tools 24.0.2].

...
BUDOWA NIEUDANA

UWAGA: 16.04.2017

androidNarzędzie została zastąpiona nową sdkmanager. Proszę zobaczyć Joe Lawsona odpowiedź i kolejne posty z marca (2017) i dalej.

Następnie dostosuj polecenie w następujący sposób:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Odśwież źródła:
  Pobieranie https://dl.google.com/android/repository/addons_list-2.xml
  Sprawdź poprawność XML
  Analizuj XML
  Lista pobranych dodatków powiodła się
  Odśwież źródła
  Pobieranie adresu URL: https://dl.google.com/android/repository/repository-11.xml
  Sprawdź poprawność XML: https://dl.google.com/android/repository/repository-11.xml
  Analizuj XML: https://dl.google.com/android/repository/repository-11.xml
...
Błąd: ignorowanie nieznanego filtru pakietu „build-tools-24.0.2”
-------------------------------
Identyfikator licencji: android-sdk-license-xxxxxxxx
Używany przez: 
 - Platforma SDK Android 7.0, API 24, wersja 2
  - Repozytorium wsparcia Androida, wersja 39
-------------------------------

...

20 listopada 2015 r
Czy akceptujesz licencję „android-sdk-license-xxxxxxxx” [t / n]: y

Instalowanie archiwów:
  Przygotowanie do instalacji archiwów
  Pobieranie platformy SDK dla systemu Android 7.0, API 24, wersja 2
  Instalowanie platformy SDK dla systemu Android 7.0, API 24, wersja 2
    Zainstalowana platforma SDK Android 7.0, API 24, wersja 296%)
  Pobieranie repozytorium obsługi systemu Android, wersja 39
  Instalowanie repozytorium obsługi systemu Android, wersja 39
    Zainstalowane repozytorium obsługi systemu Android, wersja 3999%)
  Gotowy. Zainstalowane 2 pakiety.

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!)

not2qubit
źródło
1
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositoryuruchomienie tego za pomocą wiersza polecenia z uprawnieniami administratora naprawiło błąd. Nie mogłem zainstalować menedżera wtyczek
phonegap
32

to rozwiązało mój błąd

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
Cristian Agudelo
źródło
2
Aby zapisać kilka znaków, yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"robi to samo.
Flimzy
31

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ępnie

yes | sdkmanager --licenses który akceptuje nowe licencje, które nie zostały wcześniej zaakceptowane

Pamiętaj: uruchom te komendy z tym samym użytkownikiem co on jenkins. W naszym Debianie użytkownik Jenkins jest po prostu jenkins. Innymi słowy: robienie tego, co rootspowoduje utworzenie zaakceptowanych licencji root, aby Jenkins ich nie czytał.

Nawiasem mówiąc, znaleźliśmy sdkmanagerna /var/lib/jenkins/tools/android-sdk/tools/bin. Jeśli twojego tam nie ma, znajdź to za pomocąfind / -name "sdkmanager"

Roc Boronat
źródło
2
ten rozwiązał również problem w moim przypadku (narzędzia do kompilacji 26.0.x) z Jenkins w Docker. Dzięki!
Giordano,
1
Niestety nie obejmuje to „automatycznie” części pytania.
m0skit0
@ m0skit0 dzięki za komentarz! Zaktualizowałem pytanie, aby pasowało do funkcji ostatniej wersji, aby automatycznie akceptować wszystkie licencje bez interwencji człowieka.
Roc Boronat
24

androidNarzędzie jest przestarzałe i należy użyć sdkmanagerzamiast. sdkmanagerzapisuje również plik licencji przy jego pierwszym zaakceptowaniu. Licencja zmienia się w zależności od używanego zestawu SDK, nawet pomimo polecenia

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

dział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ć -npolecenie do polecenia echo.

echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

Jeśli to nie działa, możesz zamiast tego spróbować użyć kodowania base64.

Aby odkryć moją licencję:

$> rm ${ANDROID_HOME}/
$> unzip tools_r25.2.3-linux.zip -d ${ANDROID_HOME}
$> ${ANDROID_HOME}/tools/bin/sdkmanager "system-images;android-23;default;x86_64"

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 zapisane base64.

$> base64 ${ANDROID_HOME}/licenses/android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=

Następnie możesz base64 -ddokładnie odtworzyć plik.

$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${ANDROID_HOME}/licenses/android-sdk-license

Możesz sprawdzić, czy zapisany plik jest zgodny z oczekiwaniami, uruchamiając na nim plik sha1sum.

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
Joe Lawson
źródło
19

jeśli uruchomisz yes | sdkmanager --licenses, wówczas drukujemy zawartość $ANDROID_HOME/licenses/android-sdk-license,

dostaniemy to

# cat $ANDROID_HOME/licenses/android-sdk-license

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

Aby GitLab CI mógł zaakceptować licencje Build-Tools 26.0.2 dla pakietu SDK systemu Android, musisz go uruchomić

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license
jk2K
źródło
Twoje drugie echo zmierza do tego samego, $ANDROID_HOME/licenses/android-sdk-licenseczy to jest zamierzone? to znaczy. dołączam
Ryan R,
1
@RyanR, tak, drugie echo się Android SDK Build-Tools 26.02dodaje , dodano nowy ciąg licencji sha1
jk2K
Używam potoków bitbucket, ale koncepcja wydaje się taka sama jak w przypadku GitLab CI. Twoja odpowiedź pomogła mi lepiej zrozumieć cały proces. Dzięki!
Ridcully,
@Rulcully Używam również rurociągów Bitbucket i znalazłem się tutaj, kiedy zaktualizowaliśmy Build-Tools 26.0.2i nasza kompilacja się zepsuła. Moim końcowym rozwiązaniem było po prostu zrobić yes | sdkmanager --licenses. Nie echosą potrzebne, a to jest dowód na przyszłość.
Ryan R
@ Ryan Masz na myśli, że mogę po prostu dodać „tak | sdkmanager --licenses 'to the pipeline.yml? Byłoby świetnie!
Ridcully,
16

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:

 Error: Ignoring unknown package filter 'build-tools-24.0.2'

podczas uruchamiania różnych poleceń, które zostały sugerowane do ich zainstalowania.

Rozwiązaniem jest dodanie --all:

android update sdk --no-ui --all --filter "build-tools-24.0.2"

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ą.

JosephH
źródło
1
Tak, narzędzia do budowania zostały właśnie zderzone 25.0.1.
not2qubit
1
Twoje rozwiązanie było jedyną rzeczą, jaką mogłem znaleźć do pracy na bezgłowej maszynie Ubuntu 16 dla build-tools-25 i klasy 4
spartygw
14

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:

wget --quiet --output-document=tools.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
unzip -qq tools.zip
echo y | tools/bin/sdkmanager "platforms;android-25"
echo y | tools/bin/sdkmanager "platform-tools"
echo y | tools/bin/sdkmanager "build-tools;25.0.2"
echo y | tools/bin/sdkmanager "extras;android;m2repository"
echo y | tools/bin/sdkmanager "extras;google;m2repository"

echo y powie „tak”, jeśli pojawi się jakieś pytanie, ale musisz utworzyć jedną linię na pakiet instalacyjny

Thibaut Mottet
źródło
Nadal dość aktualne po kilku miesiącach. Dziękuję Ci. Uratowałeś mi dzień :)
Prasanna Ramaswamy
Było to dla mnie pomocne, również używając GitLab
sebasira
13

Możesz także wykonać:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

W systemie Windows wykonaj:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses
r1si
źródło
11

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

ofir_aghai
źródło
10

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ą.

wprowadź opis zdjęcia tutaj

użytkownik2967081
źródło
7

Rozwiązałem ten problem, tworząc publiczne repozytorium git z zaakceptowanymi plikami licencji. Następnie używam wgetdo pobierania tych licencji na dowolnym komputerze, którego potrzebuję, do katalogu [sdk-dir] / licencje przed uruchomieniem ./gradlew, aby zbudować mój projekt.

Igor Ganapolski
źródło
6

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/licensesto, 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_HOMEwskazywanie gdziekolwiek jest zainstalowany sdk.

sksamuel
źródło
6

cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update

lub

yes | $ANDROID_HOME/tools/bin/sdkmanager --update

Jimmy Yin
źródło
„Automatycznie”
m0skit0
6

w systemie Windows otwórz cmd i wejdź do binkatalogu, uruchamiając polecenie:

cd C:\Users\username\AppData\Local\Android\sdk\tools\android\Sdk\tools\bin

następnie uruchom sdkmanager --licensespolecenie, prosi o zaakceptowanie licencji.

Deepak Kumrawat
źródło
1
Dzięki, to właśnie zrobiłem
mynameisjohnj
DostajęError: Unknown argument --licenses
deanwilliammills
4

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:

echo y | sdkmanager --licenses

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

call sdkmanager --licenses < file-y.txt

Spowoduje to utworzenie potrzebnych plików w katalogu licencji. Problem jest prawdopodobnie związany z użyciem BufferedReader w Javie

moobyfr
źródło
3

W Windows PowerShell możesz to zrobić

for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses

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ć

Mark Johnson
źródło
To kolejny powód, aby nie używać systemu Windows.
m0skit0
3

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 aptz apt install android-sdk adb. A Cordova dzwoniła do plików zainstalowanych aptzamiast plików w moim katalogu domowym.

Działa, gdy zmieniłem ścieżkę do SDK w bash:

# Change path
export ANDROID_HOME="$HOME/Android/Sdk/"
echo "Android home = $ANDROID_HOME"
# Accept licenses
eval "${ANDROID_HOME}/tools/bin/sdkmanager --licenses"
# Run Cordova
cordova build android

Potem usunięte pliki systemowe, które nie były już używane: apt remove android-sdk adb.

glin
źródło
3

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 --updateodwraca umowy, więc yes |pojawił się dwa razy.

FROM openjdk:8
# Install dev-essential(gnumake)
RUN apt update
RUN apt install -y build-essential
# Set ENV
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" \
    ANDROID_HOME="/usr/local/android-sdk" \
    ANDROID_VERSION=28 \
    ANDROID_BUILD_TOOLS_VERSION=28.0.3 \
    GRADLE_VERSION=4.10.3 \
    NDK_VERSION=r16b
# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android \
    && cd "$ANDROID_HOME" \
    && curl -o sdk.zip $SDK_URL \
    && unzip sdk.zip \
    && rm sdk.zip \
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses --sdk_root=${ANDROID_HOME}
# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
    "platforms;android-${ANDROID_VERSION}" \
    "platform-tools" --sdk_root=${ANDROID_HOME}
# Install Gradle
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
RUN mkdir /opt/gradle
RUN unzip gradle-${GRADLE_VERSION}-all.zip -d /opt/gradle
ENV PATH=${PATH}:/opt/gradle/gradle-${GRADLE_VERSION}/bin
# Install NDK
RUN wget https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip
RUN mkdir /opt/ndk-bundle
RUN unzip android-ndk-${NDK_VERSION}-linux-x86_64.zip -d /opt/ndk-bundle
ENV PATH=${PATH}:/opt/ndk-bundle

RUN mkdir /application
WORKDIR /application
Youngjae
źródło
„Wygląda na to, że sdkmanager - aktualizacja aktualizuje umowy, więc tak | pojawił się dwa razy.” Wow, masz rację. To bardzo frustrujące, ale dobre znalezisko.
cephus
2

Możesz zaakceptować całą licencję, wykonując następujące polecenie:

 sdkmanager --licenses

Spowoduje to wyświetlenie monitów o każdą licencję, której jeszcze nie zaakceptowałeś i możesz po prostu wejść, yaby zaakceptować każdą z nich.

Manoj Shrestha
źródło
„Automatycznie”
m0skit0
2

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

wprowadź opis zdjęcia tutaj

Aymen Boumaiza
źródło
Żadne z poleceń CMD nie działało dla mnie, tylko to rozwiązanie. Dzięki
deanwilliammills,
2

Ta ścieżka została zmieniona w ostatnich wersjach. ./sdkmanagerjest teraz, /Library/Android/sdk/cmdline-tools/latest/bina potem po prostu zrób

./sdkmanager --licenses
Sukiesz
źródło
2

Uwaga: dotyczy tylko użytkowników komputerów Mac

Miałem ten sam problem, ale żadna z zamieszczonych odpowiedzi nie pomogła, ponieważ w toolsfolderze nie było folderu Library/Android/sdk.(używam Androida 3.6.3 w systemie Mac OS 10.14.4)

zrzut ekranu błędu

Poniższe kroki pomogły mi rozwiązać problem z licencją:

  1. otwarty Android Studio
  2. Prasa cmd + shift + A. Otworzy Actionssię okno podręczne.
  3. Wyszukaj SDK Manageri naciśnij klawisz Enter, aby otworzyć.
  4. To otwiera wyskakujące okienko dla 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)
  5. Następnie wybierz Applyprzycisk. Spowoduje to zainstalowanie odpowiedniego zestawu SDK.

Rozwiązanie

  1. Teraz uruchom aplikację, powinna działać bez żadnych wyjątków.

zrzut ekranu sukcesu

Jayprakash Dubey
źródło
Hej, to rozwiązuje moje w Linuxmint 19.3
GaryP
1

biegnę

#react-native run-android 

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ź:

+ Google APIs
+ Android SDK Platform 23
+ Intel x86 Atom_64 System Image
+ Google APIs Intel x86 Atom_64 System Image

Podczas instalowania pakietów zaznacz opcję zaakceptuj licencję => może rozwiązać problem.

Phuc Nguyen
źródło
1

W systemie Mac OSX przejdź do sdk/tools/bin

Następnie uruchom ./sdkmanager --licensesi zaakceptuj wszystkie licencje.

Micheal C. Wallas
źródło