Akzeptieren Sie automatisch alle SDK-Lizenzen

441

Seit Gradle Android Plugins 2.2-Alpha4 :

Gradle versucht, fehlende SDK-Pakete herunterzuladen, von denen ein Projekt abhängt

Das ist unglaublich cool und war bekanntermaßen ein JakeWharton-Projekt .

Um die SDK-Bibliothek herunterzuladen, müssen Sie jedoch: die Lizenzvereinbarungen akzeptieren oder gradle Ihnen Folgendes mitteilen:

Sie haben die Lizenzvereinbarungen der folgenden SDK-Komponenten nicht akzeptiert: [Android SDK Build-Tools 24, Android SDK Platform 24]. Bevor Sie Ihr Projekt erstellen, müssen Sie die Lizenzvereinbarungen akzeptieren und die Installation der fehlenden Komponenten mit dem Android Studio SDK Manager abschließen. Alternativ erfahren Sie unter http://d.android.com/r/studio-ui/export-licenses.html , wie Sie die Lizenzvereinbarungen von einer Workstation auf eine andere übertragen können

Und das ist ein Problem, weil ich gerne alle SDK-Abhängigkeiten installieren würde, während ich a mache gradle build.

Ich suche nach einer Lösung, um automatisch alle Lizenzen zu akzeptieren. Vielleicht ein Gradle-Skript? Hast du eine Idee ?

Vielen Dank!

[BEARBEITEN]

Eine Lösung bestand darin, Folgendes auszuführen:

android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository

Und installieren Sie es manuell, aber es ist der neue Zweck des Gradles, dies zu tun.

[EDIT 2]

Eine bessere Lösung ist die Verwendung des sdkmananger:

yes | sdkmanager --licenses
nsvir
quelle
12
Sie können auch einen echo y |vor diesen Befehl stellen, um die Lizenz automatisch zu akzeptieren. Nützlich beim Laufen auf einer kopflosen CI-Box :)
Dori
3
Ich musste tun, ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryweil das androidWerkzeug in meinem Haus lokalisiert war
Jacksonkr
7
sdkmanager --Lizenzen funktionieren nicht mehr. Ich habe --upgrade verwendet, die Fehler ignoriert und dadurch die Lizenzprobleme behoben.
Jcsubmit
6
Ich habe diesen Befehl für das CI-Umgebungserstellungsskript mit kleinen Anpassungen verwendet. Ich habe --sdk_root = $ ANDROID_SDK_PATH hinzugefügt. Das Problem war, dass Lizenzen akzeptiert und nicht im Android SDK-Stammordner gespeichert wurden. Letzter Befehl: ja | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (ohne sudo)
adi9090
3
Achten Sie darauf gesetzt haben , $ANDROID_SDK_PATHum die tatsächliche Wurzel Pfad , in dem Sie das SDK installiert haben (zB: /opt/android-sdk), oder einfach nur den Weg legen direkt (dh yes | sdkmanager --licenses --sdk_root=/opt/android-sdk)
gmc

Antworten:

364

AndroidSDK kann endlich Lizenzen akzeptieren.

yes | sdkmanager --licenses

BEARBEITEN:

Wie in den Kommentaren von @MoOx erwähnt, können Sie dies unter macOS tun

yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses

Wie in den Kommentaren von @pho, @mikebridge und @ Noitidart unter Windows erwähnt, können Sie dies tun

cmd.exe ""/K"%LocalAppData%\Android\sdk\tools\bin\sdkmanager.bat --licenses"

Stellen Sie sicher, dass Sie Java vorher installieren

nsvir
quelle
4
Bei Witwen musste ich zu Ausführen gehen, dann C:\Users\x1\AppData\Local\Android\sdk\tools\androidöffnete sich eine GUI und die Installation fehlte. Klicken Sie dann in einem neuen Dialogfeld auf "Lizenzen akzeptieren".
Noitidart
8
Dies funktioniert nicht unter Linux. Es gibt keine sdkmanager-Datei unter dem Verzeichnis tools / bin oder irgendwo anders. Können Sie bitte helfen?
Mehmed Mert
36
Unter macOS können Sie tunyes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx
5
Wie kann ich Lizenzen automatisch vom Gradle Wrapper akzeptieren?
Howard Swope
7
Für den Pfad auf @Noitidart stimmen, aber es hat nicht funktioniert. Ich musste C: \ Users \ x1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager --Lizenzen an der Eingabeaufforderung ausführen und auf "y" klicken "+ Geben Sie zu den
Eingabeaufforderungen
177

Ich habe dies mit der alpha5Vorschau angetroffen .

Jake Wharton hat mich darauf hingewiesen, dass Sie derzeit verwenden können

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

um den aktuellen $ANDROID_HOME/licenseOrdner auf Ihrem Computer neu zu erstellen . Dies hätte das gleiche Ergebnis wie der im Link der Fehlermeldung ( http://tools.android.com/tech-docs/new-build-system/license ) beschriebene Prozess .

Die Hashes sind sha1s des Lizenztextes, von dem ich mir vorstelle, dass er regelmäßig aktualisiert wird, sodass dieser Code nur so lange funktioniert :)

Und installieren Sie es manuell, aber es ist der neue Zweck des Gradles, dies zu tun.

Ich war zuerst überrascht, dass dies nicht sofort funktionierte, selbst wenn ich die Lizenzen für die genannten Komponenten über das androidTool akzeptiert hatte , aber es wurde mir darauf hingewiesen, dass es der SDK-Manager in AS ist, der den /licensesOrdner erstellt.

Ich denke, dass offizielle Tools diesen Schritt aus rechtlichen Gründen nicht überspringen möchten.

Lesen Sie die darin enthaltenen Versionshinweise erneut

Automatischer SDK-Download: Gradle versucht, fehlende SDK-Pakete herunterzuladen, von denen ein Projekt abhängt.

Dies bedeutet nicht, dass es funktioniert, wenn Sie die Android-Tools noch nicht installiert und die neuesten Lizenzen bereits akzeptiert haben.

EDIT: Davon abgesehen funktioniert es auf meiner Test-Gubuntu-Box immer noch nicht, bis ich das SDK mit AS verbinde. CI funktioniert aber gut - nicht sicher, was der Unterschied ist ...

Dori
quelle
Es gibt einen kleinen Fehler in der sdkDownload-Funktion in Bezug auf einige der Komponenten, z. B. support-v4. Es wird die Komponenten aktualisieren , aber gradle nicht Update bis zum nächsten Aufruf sehen. Eine Problemumgehung, um gradle zweimal auszuführen, einmal wegzuwerfen: gradle-Abhängigkeiten || true - code.google.com/p/android/issues/detail?id=212309
Joe Bowbeer
6
Sie können mkdir -panstelle von verwenden || true.
Älterer Gott
Es funktioniert, danke für diese Panne, gut zu wissen. Um zu überprüfen, ob Ihr SDK-Pfad wie erwartet definiert ist: echo $ ANDROID_SDK
tryp
In meiner Umgebung ist ANDROID_SDK nicht definiert, aber es funktioniert mit ANDROID_HOME
Dimitri L.
5
@stack_ved: Ich habe gerade eine weitere hinzugefügt echo: echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license". Aber ich denke, dein Problem versteckt sich woanders.
Paul
132

Für das neueste Android Studio (2.3) können Sie alle Lizenzen am besten aktualisieren / akzeptieren, indem Sie Folgendes ausführen:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

Möglicherweise müssen Sie die Lizenzdateien basierend auf Ihrem Setup noch an andere Speicherorte kopieren.

bgies
quelle
Dies scheint der beste Weg zu sein und funktioniert auch auf allen Plattformen. Führen Sie es einfach austools/bin/sdkmanager --licenses
jnv
Wenn Sie einen alten SDK-Manager haben, funktionieren die Lizenzen nicht. Es ist erforderlich, den Werkzeugordner an einen anderen Speicherort zu kopieren, dann --sdk_root = zu verwenden und auf Ihren SDK-Ordner zu verweisen. Anschließend können Sie die Werkzeuge auf eine neuere Version aktualisieren.
Mirek Michalak
Können wir yesdiesen Befehl für automatisierte Build-Systeme irgendwie weiterleiten? Sie haben nicht immer interaktiven Konsolenzugriff auf diese Computer, sodass das yphysische Drücken der Tastatur nicht funktioniert.
void.pointer
Kann mir bitte jemand eine Anleitung zur Implementierung dieser Lösung geben? Müssen Sie diese Zeile in build.sh hinzufügen?
stack_ved
1
es hat bei mir funktioniert, aber ich musste es tun, cd $ANDROID_HOMEbevor ich diesen Befehl ausführte
Inus Saha
57

Für das neue sdkmanagerDienstprogramm:

yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"

Es gibt eine gewisse Verzögerung zwischen den Ja-Werten, sodass der Befehl möglicherweise eine Weile mit der angezeigten Lizenz hängen bleibt, aber kein menschliches Eingreifen erforderlich ist.

A. Wütend
quelle
In meiner Installation debian9 habe ich nur eine sdkmanager.jar: android-sdk-linux / tools / lib / sdkmanager.jar und # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar Fehler: Die Eigenschaft tools directory ist nicht eingestellt, bitte stellen Sie sicher, dass Sie android ausführen
user3313834
1
Dies basiert auf der Annahme, dass Sie die SDK-Tools als Archiv von Google heruntergeladen und in $ ANDROID_HOME
A. Rager
Dies scheint die up-to-dateAntwort zu sein. Es scheint --licensesnicht mehr zu existieren. Hinweis: Um eine Liste möglicher Versionen anzuzeigen, die bereitgestellt werden können:$ANDROID_HOME/tools/bin/sdkmanager --list
Marinos An
2
Danke für den Tipp. Am Ende habe ich yes | android-sdk-linux/tools/bin/sdkmanager --licenses || truein meinem CI verwendet.
iSWORD
es | $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; 28.0.3" -> das Ändern der Version hat bei mir funktioniert. Vielen Dank !
Ishab Acharya
43

Wenn Sie Jenkins verwenden, können Sie das erste Bash-Skript als ersten Schritt im Erstellungsprozess verwenden:

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

Dadurch werden natürlich ALLE verfügbaren Updates installiert, aber Sie sparen Zeit, wenn Sie Speicherplatz sparen können. Der Ruhezustand soll die unterbrochene Readline im Installationsprogramm vermeiden, da "yes" in diesem Fall nicht richtig funktioniert.

BEARBEITEN: Sie müssen im Build-Schritt auch das Plugin "Installieren von Android-Projektvoraussetzungen" hinzufügen, um das richtige $ ANDROID_HOME zu erhalten, wenn Sie den integrierten SDK-Manager verwenden.

Rabe
quelle
Ich füge Ihre Codezeile vor "cordova platform add android" in meinem Jenkins-Build hinzu, der unter Ubuntu ausgeführt wird, aber immer noch den folgenden Fehler erhält: BUILD FAILED in 7s Fehler: / var / lib / jenkins / workspace / qa_global_php / platform / android / gradlew : Befehl mit Exit-Code 1 fehlgeschlagen. Fehlerausgabe: FAILURE: Build mit einer Ausnahme fehlgeschlagen. * Was ist schief gelaufen: Beim Konfigurieren des Root-Projekts 'android' ist ein Problem aufgetreten. > Sie haben die Lizenzvereinbarungen der folgenden SDK-Komponenten nicht akzeptiert:
Ashish Karpe
[Android SDK Build-Tools 26.0.2]. Bevor Sie Ihr Projekt erstellen, müssen Sie die Lizenzvereinbarungen akzeptieren und die Installation der fehlenden Komponenten mit dem Android Studio SDK Manager abschließen.
Ashish Karpe
32

Leider funktioniert die Art und Weise, wie OP ursprünglich gelöst wurde, nicht immer. Wenn Sie aus der Fehlermeldung herausfinden, welche Builds Ihre aktuelle Build-Tools- Version ist . Es könnte sein, dass eine höhere Version von Build-Tools fehlt. In diesem Fall müssen Sie SDK Manager manuell starten, die Build-Tools hinzufügen und die Lizenz akzeptieren.

Gemäß den OP-Anweisungen sieht es wie folgt aus.

$ ./gradlew build

 
Um die JVM-Einstellungen für diesen Build zu berücksichtigen, wird eine neue JVM gegabelt. Bitte verwenden Sie den Daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

FAILURE: Build mit einer Ausnahme fehlgeschlagen.

* Was schief gelaufen ist:
Beim Konfigurieren des Projekts ': app' ist ein Problem aufgetreten.
> Sie haben die Lizenzvereinbarungen der folgenden SDK-Komponenten nicht akzeptiert:
  [Android SDK Build-Tools 24.0.2].

...
BAU FEHLGESCHLAGEN

HINWEIS: 2017-04-16

Das androidTool wurde jetzt zugunsten des neuen veraltet sdkmanager. Bitte lesen Sie die Antwort von Joe Lawson und die nachfolgenden Beiträge ab März (2017).

Passen Sie dann Ihren Befehl wie folgt an:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Quellen aktualisieren:
  Abrufen von https://dl.google.com/android/repository/addons_list-2.xml
  XML validieren
  XML analysieren
  Add-Ons-Liste erfolgreich abgerufen
  Quellen aktualisieren
  URL abrufen: https://dl.google.com/android/repository/repository-11.xml
  Überprüfen Sie XML: https://dl.google.com/android/repository/repository-11.xml
  XML analysieren: https://dl.google.com/android/repository/repository-11.xml
...
Fehler: Ignoriert den unbekannten Paketfilter 'build-tools-24.0.2'
-------------------------------
Lizenz-ID: android-sdk-license-xxxxxxxx
Benutzt von: 
 - SDK-Plattform Android 7.0, API 24, Version 2
  - Android Support Repository, Version 39
-------------------------------

...

20. November 2015
Akzeptieren Sie die Lizenz 'android-sdk-license-xxxxxxxx' [j / n]: y

Archiv installieren:
  Vorbereiten der Installation von Archiven
  Herunterladen der SDK-Plattform Android 7.0, API 24, Version 2
  Installieren der SDK-Plattform Android 7.0, API 24, Version 2
    Installierte SDK-Plattform Android 7.0, API 24, Revision 296%)
  Herunterladen des Android Support Repository, Version 39
  Installieren des Android Support Repository, Version 39
    Installiertes Android Support Repository, Revision 3999%)
  Erledigt. 2 Pakete installiert.

Wenn Sie dies erneut ausführen, machen Sie Gradle immer noch nicht glücklich. Manuelle Akzeptanz ist also die einzige Lösung, bis sich jemand etwas Besseres einfallen lässt. (Bitte!)

not2qubit
quelle
1
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositoryDas Ausführen über die Eingabeaufforderung mit Administratorrecht hat den Fehler behoben. Ich konnte den Phonegap Plugin Manager
Ravimallya
32

Dies löste meinen Fehler

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
Cristian Agudelo
quelle
2
Um ein paar Zeichen zu speichern, gehen Sie yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"genauso vor.
Flimzy
31

Wir haben das gleiche Problem beim Aufbau des Projekts auf Jenkins festgestellt. Mit buildToolsVersion '25.0.2'müssen wir vor dem Bau Lizenzen akzeptieren. In unserem Fall mussten wir Folgendes ausführen:

yes | sdkmanager --update das akzeptiert Lizenzen für den sdkmanager selbst und dann

yes | sdkmanager --licenses das akzeptiert neue Lizenzen, die zuvor nicht akzeptiert wurden

Denken Sie daran: Führen Sie diese Befehle mit demselben Benutzer aus, der dies jenkinstut. In unserem Debian ist der Jenkins-Benutzer gerecht jenkins. Mit anderen Worten: Wenn Sie dies so tun, rootwerden die akzeptierten Lizenzen erstellt root, sodass Jenkins sie nicht liest.

Übrigens fanden wir sdkmanagerbei /var/lib/jenkins/tools/android-sdk/tools/bin. Wenn deins nicht da ist, finde es mitfind / -name "sdkmanager"

Roc Boronat
quelle
2
Dieser löste das Problem auch in meinem Fall (Build Tools 26.0.x) mit Jenkins in Docker. Vielen Dank!
Giordano
1
Leider beinhaltet dies nicht den "automatisch" Teil der Frage.
m0skit0
@ m0skit0 danke für deinen Kommentar! Ich habe die Frage so aktualisiert, dass sie mit der Funktion der letzten Version übereinstimmt, um automatisch alle Lizenzen ohne menschliches Eingreifen zu akzeptieren.
Roc Boronat
24

Das androidTool ist veraltet und Sie sollten sdkmanagerstattdessen das verwenden. sdkmanagerSchreibt auch die Lizenzdatei, wenn Sie sie zum ersten Mal akzeptieren. Die Lizenz ändert sich je nachdem, welches SDK Sie verwenden, obwohl der Befehl

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

funktioniert auf einigen Systemen. Es wird nicht bei allen funktionieren. Bei einigen SDK-Installationen wird erwartet, dass die Lizenzdatei ohne Zeilenumbruch in der Datei endet. Fügen Sie daher -ndem Befehl echo ein hinzu.

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

Wenn dies nicht funktioniert, können Sie stattdessen die Base64-Codierung verwenden.

So entdecken Sie meine Lizenz:

$> 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"

Sie werden aufgefordert, die Lizenz zu akzeptieren. Nach dem Akzeptieren wird es kopiert ${ANDROID_HOME}/licenses/android-sdk-license. Damit Sie immer genau das bekommen, was schriftlich verwendet wird base64.

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

Dann können Sie base64 -ddie Datei genau neu erstellen.

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

Sie können überprüfen, ob die geschriebene Datei den Erwartungen entspricht, indem Sie eine sha1sum darauf ausführen.

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
Joe Lawson
quelle
19

Wenn Sie ausführen yes | sdkmanager --licenses, drucken wir Inhalte von $ANDROID_HOME/licenses/android-sdk-license,

wir werden das bekommen

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

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

Damit GitLab CI Lizenzen für Android SDK Build-Tools 26.0.2 akzeptiert, müssen Sie diese ausführen

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license
jk2K
quelle
Dein zweites Echo geht gleich, $ANDROID_HOME/licenses/android-sdk-licenseist das beabsichtigt? dh. anhängen
Ryan R
1
@ RyanR, ja, das zweite Echo wird Android SDK Build-Tools 26.02angehängt , fügte eine neue Lizenz sha1 Zeichenfolge hinzu
jk2K
Ich verwende Bitbucket-Pipelines, aber das Konzept scheint das gleiche zu sein wie bei GitLab CI. Ihre Antwort hat mir geholfen, den gesamten Prozess besser zu verstehen. Vielen Dank!
Ridcully
@Ridcully Ich verwende auch Bitbucket Pipelines und befand mich hier, als wir ein Upgrade auf durchgeführt haben Build-Tools 26.0.2und unser Build kaputt ging. Meine Endlösung war einfach zu tun yes | sdkmanager --licenses. Keine echos benötigt und dies ist zukunftssicher.
Ryan R
@ Ryan Du meinst ich kann einfach 'yes | hinzufügen sdkmanager --lizenzen an die Pipeline.yml? Das wäre toll!
Ridcully
16

Beachten Sie, dass Build-Tools-24.0.2 für alle, die derzeit zu dieser Frage kommen, (glaube ich) jetzt als veraltet angesehen wird. Sie erhalten also:

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

beim Ausführen der verschiedenen Befehle, die zur Installation vorgeschlagen wurden.

Die Lösung besteht darin, Folgendes hinzuzufügen --all:

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

Auch wenn Sie unter 32-Bit-Linux arbeiten, ist alles nach dem Erstellen der Tools 23.0.1 nur 64-Bit , wird also nicht ausgeführt. 32-Bit-Benutzer stecken in 23.0.1 fest. Die einzige Möglichkeit, spätere Build-Tools zu erhalten, besteht darin, auf 64-Bit umzusteigen.

JosephH
quelle
1
Ja, Build-Tools wurden nur gestoßen 25.0.1.
not2qubit
1
Ihre Lösung war das einzige, was ich finden konnte, um an einer kopflosen Ubuntu 16-Maschine für Build-Tools-25 und Gradle 4 zu arbeiten
spartygw
14

Wenn Sie verwenden, müssen tools/bin/sdkmanager --licensesSie noch eine menschliche Interaktion haben. Ich habe das Problem mit meinem Gitlab CI. Das ist meine Lösung:

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 Ich werde ja sagen, wenn es irgendwelche Fragen gibt, aber Sie müssen eine Zeile pro Installe-Paket machen

Thibaut Mottet
quelle
Nach einigen Monaten immer noch ziemlich relevant. Vielen Dank. Du hast meinen Tag gerettet :)
Prasanna Ramaswamy
Dies war hilfreich für mich, auch mit GitLab
sebasira
13

Sie können auch einfach ausführen:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

Führen Sie unter Windows Folgendes aus:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses
r1si
quelle
11

Für eine Fehlermeldung zur SDK-API-Nummer 25:

android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository

ofir_aghai
quelle
10

Ok für jemanden, der diese Ausgabe ab 2018 hat. Die obigen Antworten haben bei mir überhaupt nicht funktioniert. Was DID funktionierte, war das Öffnen des Android SDK - Klicken Sie auf die Schaltfläche DOWNLOAD in der Symbolleiste und wählen Sie die entsprechenden Pakete aus. Nach Abschluss des Downloads können Sie die Lizenzvereinbarung akzeptieren.

Geben Sie hier die Bildbeschreibung ein

user2967081
quelle
7

Ich habe dieses Problem gelöst, indem ich ein öffentliches Git-Repo mit den akzeptierten Lizenzdateien erstellt habe. Dann rufewget ich diese Lizenzen auf jedem Computer, den ich benötige, in ein Verzeichnis [sdk-dir] / licenses ab, bevor ich ./gradlew ausführe , um mein Projekt zu erstellen.

IgorGanapolsky
quelle
6

Wenn Sie Probleme mit dem Befehlszeilen-SDK haben, werden die von Ihnen akzeptierten Lizenzen nicht gefunden, weil sie an einen anderen Speicherort geschrieben wurden als dort $ANDROID_HOME/licenses, wo sie sein müssen.

Ich fand die einfachste Lösung darin, die Lizenzen wie folgt zu akzeptieren:

$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME

Hinweis: Dies setzt voraus, dass Sie festlegen ANDROID_HOME, wohin Ihr SDK installiert ist.

sksamuel
quelle
6

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

oder

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

Jimmy Yin
quelle
"Automatisch"
m0skit0
6

Öffnen Sie für Windows cmd und geben Sie das binVerzeichnis ein, indem Sie den folgenden Befehl ausführen :

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

Führen sdkmanager --licensesSie dann den Befehl aus und Sie werden aufgefordert, Lizenzen zu akzeptieren.

Deepak Kumrawat
quelle
1
Danke, das habe ich getan
mynameisjohnj
Ich bekommeError: Unknown argument --licenses
Deanwilliammills
4

Ich habe endlich eine Lösung unter Windows gefunden, um eine wirklich stille und automatische Installation zu haben:

Unter Windows funktioniert die folgende Syntax nicht:

echo y | sdkmanager --licenses

Es scheint, dass das "y" nicht korrekt an das im Stapel aufgerufene Java-Programm gesendet wird.

Die Problemumgehung besteht darin, eine Datei file-y.txt mit mehreren "y" nacheinander zu erstellen und zu verwenden

call sdkmanager --licenses < file-y.txt

Dadurch werden die erforderlichen Dateien im Lizenzverzeichnis erstellt. Das Problem hängt wahrscheinlich mit der Verwendung von BufferedReader in Java zusammen

moobyfr
quelle
3

In Windows PowerShell können Sie dies tun

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

Dies ist viel flexibler und erfordert keinen manuellen Eingriff. Die Zahl 30 ist willkürlich, sollte ausreichen, um die Anzahl der Lizenzannahmen abzudecken, kann aber bei Bedarf erhöht werden

Mark Johnson
quelle
Ein weiterer Grund, Windows nicht zu verwenden.
m0skit0
3

Ich hatte den gleichen Fehler bei der Verwendung von Cordova.

Das Problem war auf die Tatsache zurückzuführen, dass ich Android Sdk über Android Studio und durch aptmit installiert habe apt install android-sdk adb. Und Cordova hat die installierten Dateien aptanstelle der Dateien in meinem Home-Verzeichnis aufgerufen.

Es hat funktioniert, als ich in bash den Pfad zu SDK geändert habe:

# 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

Dann habe ich die Systemdateien entfernt, die nicht mehr verwendet wurden : apt remove android-sdk adb.

AL
quelle
3

Hier ist mein Docker-Setup.
Sie können aus einer einfachen Linux-Umgebung folgen.

Beachten Sie das yes |und --licenses --sdk_root=${ANDROID_HOME}Klauseln.
Es scheint sdkmanager --updateVereinbarungen rückgängig zu machen, so yes |ist zweimal erschienen.

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
quelle
"Es scheint, dass sdkmanager --update Vereinbarungen zurücksetzt, also wird yes | zweimal angezeigt." Wow, du hast recht. Das ist sehr frustrierend, aber gut zu finden.
Cephus
2

Sie können die gesamte Lizenz akzeptieren, indem Sie den folgenden Befehl ausführen:

 sdkmanager --licenses

Dadurch werden Sie durch alle Lizenzen geführt, die Sie noch nicht akzeptiert haben, und Sie können einfach eingeben y, um jede Lizenz zu akzeptieren.

Manoj Shrestha
quelle
"Automatisch"
m0skit0
2

Ich habe alle oben genannten Befehle auf einem Windows 10-Computer ausprobiert, aber die Lösung bestand darin, den SDKMANAGER zu verwenden, um Lizenzen zu überprüfen und zu akzeptieren, um fehlende Versionen zu installieren

Geben Sie hier die Bildbeschreibung ein

Aymen Boumaiza
quelle
Keiner der CMD-Befehle hat bei mir funktioniert, nur diese Lösung. Danke
Deanwilliammills
2

Dieser Pfad wurde in den letzten Versionen geändert. ./sdkmanagerist jetzt drin /Library/Android/sdk/cmdline-tools/latest/binund dann einfach machen

./sdkmanager --licenses
Sukeesh
quelle
2

Hinweis: Dies ist nur für Mac-Benutzer

Ich hatte das gleiche Problem, aber keine der Antworten hat geholfen, da kein toolsOrdner vorhanden war Library/Android/sdk.(ich verwende Android 3.6.3 unter Mac OS 10.14.4).

Fehler Screenshot

Die folgenden Schritte haben mir geholfen, den Lizenzproblemfehler zu beheben:

  1. Öffnen Android Studio
  2. Drücken Sie cmd + shift + A. Dies öffnet ein ActionsPopup-Fenster.
  3. Suchen Sie nach SDK Managerund drücken Sie die Eingabetaste, um es zu öffnen.
  4. Dies öffnet das Popup für Android SDK. Wählen Sie eine andere Version von Android als die bereits installierte. (In meinem Fall war Android 10.0 bereits installiert, daher habe ich Android 9.0 ausgewählt.)
  5. Wählen Sie dann die ApplySchaltfläche. Dadurch wird das entsprechende SDK installiert.

Lösung

  1. Führen Sie nun Ihre App aus, sie sollte ausnahmslos funktionieren.

Erfolgs-Screenshot

Jayprakash Dubey
quelle
Hey, das löst meine in Linuxmint 19.3
GaryP
1

ich renne

#react-native run-android 

vom Terminal und traf dieses Problem. Gehen Sie manuell zu Android Studio -> Android SDK -> SDK-Plattform. Klicken Sie auf Paketdetails anzeigen und überprüfen Sie:

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

Aktivieren Sie bei der Installation von Paketen die Option "Lizenz akzeptieren =>", um das Problem zu beheben.

Phuc Nguyen
quelle
1

Navigieren Sie unter Mac OS X zu sdk/tools/bin

Führen Sie dann ./sdkmanager --licensesalle Lizenzen aus und akzeptieren Sie sie.

Micheal C Wallas
quelle