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
echo y |
vor diesen Befehl stellen, um die Lizenz automatisch zu akzeptieren. Nützlich beim Laufen auf einer kopflosen CI-Box :)~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repository
weil dasandroid
Werkzeug in meinem Haus lokalisiert war$ANDROID_SDK_PATH
um die tatsächliche Wurzel Pfad , in dem Sie das SDK installiert haben (zB:/opt/android-sdk
), oder einfach nur den Weg legen direkt (dhyes | sdkmanager --licenses --sdk_root=/opt/android-sdk
)Antworten:
AndroidSDK kann endlich Lizenzen akzeptieren.
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
quelle
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".yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
Ich habe dies mit der
alpha5
Vorschau angetroffen .Jake Wharton hat mich darauf hingewiesen, dass Sie derzeit verwenden können
um den aktuellen
$ANDROID_HOME/license
Ordner 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 :)
Ich war zuerst überrascht, dass dies nicht sofort funktionierte, selbst wenn ich die Lizenzen für die genannten Komponenten über das
android
Tool akzeptiert hatte , aber es wurde mir darauf hingewiesen, dass es der SDK-Manager in AS ist, der den/licenses
Ordner erstellt.Ich denke, dass offizielle Tools diesen Schritt aus rechtlichen Gründen nicht überspringen möchten.
Lesen Sie die darin enthaltenen Versionshinweise erneut
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 ...
quelle
mkdir -p
anstelle von verwenden|| true
.echo
:echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"
. Aber ich denke, dein Problem versteckt sich woanders.Für das neueste Android Studio (2.3) können Sie alle Lizenzen am besten aktualisieren / akzeptieren, indem Sie Folgendes ausführen:
Möglicherweise müssen Sie die Lizenzdateien basierend auf Ihrem Setup noch an andere Speicherorte kopieren.
quelle
tools/bin/sdkmanager --licenses
yes
diesen Befehl für automatisierte Build-Systeme irgendwie weiterleiten? Sie haben nicht immer interaktiven Konsolenzugriff auf diese Computer, sodass dasy
physische Drücken der Tastatur nicht funktioniert.cd $ANDROID_HOME
bevor ich diesen Befehl ausführteFür das neue
sdkmanager
Dienstprogramm: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.
quelle
up-to-date
Antwort zu sein. Es scheint--licenses
nicht mehr zu existieren. Hinweis: Um eine Liste möglicher Versionen anzuzeigen, die bereitgestellt werden können:$ANDROID_HOME/tools/bin/sdkmanager --list
yes | android-sdk-linux/tools/bin/sdkmanager --licenses || true
in meinem CI verwendet.Wenn Sie Jenkins verwenden, können Sie das erste Bash-Skript als ersten Schritt im Erstellungsprozess verwenden:
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.
quelle
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
Passen Sie dann Ihren Befehl wie folgt an:
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!)
quelle
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Das Ausführen über die Eingabeaufforderung mit Administratorrecht hat den Fehler behoben. Ich konnte den Phonegap Plugin ManagerDies löste meinen Fehler
quelle
yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
genauso vor.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 dannyes | sdkmanager --licenses
das akzeptiert neue Lizenzen, die zuvor nicht akzeptiert wurdenDenken Sie daran: Führen Sie diese Befehle mit demselben Benutzer aus, der dies
jenkins
tut. In unserem Debian ist der Jenkins-Benutzer gerechtjenkins
. Mit anderen Worten: Wenn Sie dies so tun,root
werden die akzeptierten Lizenzen erstelltroot
, sodass Jenkins sie nicht liest.Übrigens fanden wir
sdkmanager
bei/var/lib/jenkins/tools/android-sdk/tools/bin
. Wenn deins nicht da ist, finde es mitfind / -name "sdkmanager"
quelle
Das
android
Tool ist veraltet und Sie solltensdkmanager
stattdessen das verwenden.sdkmanager
Schreibt auch die Lizenzdatei, wenn Sie sie zum ersten Mal akzeptieren. Die Lizenz ändert sich je nachdem, welches SDK Sie verwenden, obwohl der Befehlfunktioniert 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
-n
dem Befehl echo ein hinzu.Wenn dies nicht funktioniert, können Sie stattdessen die Base64-Codierung verwenden.
So entdecken Sie meine Lizenz:
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 wirdbase64
.Dann können Sie
base64 -d
die Datei genau neu erstellen.Sie können überprüfen, ob die geschriebene Datei den Erwartungen entspricht, indem Sie eine sha1sum darauf ausführen.
quelle
Wenn Sie ausführen
yes | sdkmanager --licenses
, drucken wir Inhalte von$ANDROID_HOME/licenses/android-sdk-license
,wir werden das bekommen
Damit GitLab CI Lizenzen für Android SDK Build-Tools 26.0.2 akzeptiert, müssen Sie diese ausführen
quelle
$ANDROID_HOME/licenses/android-sdk-license
ist das beabsichtigt? dh. anhängenAndroid SDK Build-Tools 26.02
angehängt , fügte eine neue Lizenz sha1 Zeichenfolge hinzuBuild-Tools 26.0.2
und unser Build kaputt ging. Meine Endlösung war einfach zu tunyes | sdkmanager --licenses
. Keineecho
s benötigt und dies ist zukunftssicher.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:
beim Ausführen der verschiedenen Befehle, die zur Installation vorgeschlagen wurden.
Die Lösung besteht darin, Folgendes hinzuzufügen
--all
: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.
quelle
25.0.1
.Wenn Sie verwenden, müssen
tools/bin/sdkmanager --licenses
Sie noch eine menschliche Interaktion haben. Ich habe das Problem mit meinem Gitlab CI. Das ist meine Lösung:echo y
Ich werde ja sagen, wenn es irgendwelche Fragen gibt, aber Sie müssen eine Zeile pro Installe-Paket machenquelle
Sie können auch einfach ausführen:
Führen Sie unter Windows Folgendes aus:
quelle
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
quelle
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.
quelle
Ich habe dieses Problem gelöst, indem ich ein öffentliches Git-Repo mit den akzeptierten Lizenzdateien erstellt habe. Dann rufe
wget
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.quelle
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.quelle
cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update
oder
yes | $ANDROID_HOME/tools/bin/sdkmanager --update
quelle
Öffnen Sie für Windows cmd und geben Sie das
bin
Verzeichnis ein, indem Sie den folgenden Befehl ausführen :Führen
sdkmanager --licenses
Sie dann den Befehl aus und Sie werden aufgefordert, Lizenzen zu akzeptieren.quelle
Error: Unknown argument --licenses
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:
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
Dadurch werden die erforderlichen Dateien im Lizenzverzeichnis erstellt. Das Problem hängt wahrscheinlich mit der Verwendung von BufferedReader in Java zusammen
quelle
Kopieren Sie das gesamte Lizenz- / Verzeichnis und fügen Sie es in das Android SDK-Ausgangsverzeichnis auf dem Computer ein, auf dem Sie Ihre Projekte erstellen möchten.
https://developer.android.com/studio/intro/update.html#download-with-gradle
Dies löste das Problem für mich
quelle
In Windows PowerShell können Sie dies tun
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
quelle
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
apt
mit installiert habeapt install android-sdk adb
. Und Cordova hat die installierten Dateienapt
anstelle der Dateien in meinem Home-Verzeichnis aufgerufen.Es hat funktioniert, als ich in bash den Pfad zu SDK geändert habe:
Dann habe ich die Systemdateien entfernt, die nicht mehr verwendet wurden :
apt remove android-sdk adb
.quelle
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 --update
Vereinbarungen rückgängig zu machen, soyes |
ist zweimal erschienen.quelle
Sie können die gesamte Lizenz akzeptieren, indem Sie den folgenden Befehl ausführen:
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.quelle
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
quelle
Dieser Pfad wurde in den letzten Versionen geändert.
./sdkmanager
ist jetzt drin/Library/Android/sdk/cmdline-tools/latest/bin
und dann einfach machenquelle
Hinweis: Dies ist nur für Mac-Benutzer
Ich hatte das gleiche Problem, aber keine der Antworten hat geholfen, da kein
tools
Ordner vorhanden warLibrary/Android/sdk.
(ich verwende Android 3.6.3 unter Mac OS 10.14.4).Die folgenden Schritte haben mir geholfen, den Lizenzproblemfehler zu beheben:
Android Studio
cmd + shift + A
. Dies öffnet einActions
Popup-Fenster.SDK Manager
und drücken Sie die Eingabetaste, um es zu öffnen.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.)Apply
Schaltfläche. Dadurch wird das entsprechende SDK installiert.quelle
ich renne
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:
Aktivieren Sie bei der Installation von Paketen die Option "Lizenz akzeptieren =>", um das Problem zu beheben.
quelle
Navigieren Sie unter Mac OS X zu
sdk/tools/bin
Führen Sie dann
./sdkmanager --licenses
alle Lizenzen aus und akzeptieren Sie sie.quelle