Android Studio, wie man Gradle Sync manuell ausführt?


134

Ich debugge Gradle-Probleme in Android Studio und sehe Verweise auf "Gradle-Synchronisierung ausführen", bin mir aber nicht sicher, wie ich diesen Befehl ausführen soll.

Wie führe ich "Gradle Sync" von Android Studio oder Mac Terminal aus?

Antworten:


211

Android Studio sollte diese Schaltfläche in der Symbolleiste mit der Bezeichnung "Projekt mit Gradle-Dateien synchronisieren" haben.

EDIT: Ich weiß nicht, wann es geändert wurde, aber es sieht jetzt so aus:

Geben Sie hier die Bildbeschreibung ein

BEARBEITEN: So sieht es in 3.3.1 aus ODER gehen Sie in der Menüleiste zu Datei -> Projekt mit Gradle-Dateien synchronisieren.Geben Sie hier die Bildbeschreibung ein


2
fehlt in Adnroid Studio 3.0.1
Roman M

10
@ RomanM Es fehlt nicht ... Es wurde in "Datei" verschoben ... Also, es ist neben dem Symbol speichern
W0rmH0le

49

WARNUNG : Der --recompile-scriptsBefehl ist seit gradleVersion 5.0 veraltet . gradleFühren Sie aus , um Ihre Version zu überprüfen gradle -v.

./gradlew --recompile-scripts

Es wird eine Synchronisierung durchgeführt, ohne etwas zu erstellen.


Alternativ mit der Befehlszeile in Ihrem Stammprojekt

./gradlew build

Es synchronisiert und erstellt Ihre App und dauert länger als nur eine Gradle-Synchronisierung

Verwenden Sie, um alle verfügbaren Gradle-Aufgaben anzuzeigen ./gradlew tasks


2
Ja, aber Build macht mehr richtig? Was ist der Unterschied zwischen Synchronisierung und Build?
JohnyTex

Build ist eine sehr allgemeine Aufgabe. Es ist wie mit einem Vorschlaghammer eine Nuss zu knacken. Bei Android-Projekten kann das Ausführen der Aufgabe "Erstellen" ewig dauern!
Cesards

10
Ich benutze com.android.tools.build:gradle:3.5.1,und es hat keine Option --recompile-scripts
geosmart

Seit Gradle 5.0 ist --recompile-scripts zu einer unbekannten Befehlszeilenoption geworden.
Francis Bacon

28

In Android Studio 3.3 ist es hier:

Geben Sie hier die Bildbeschreibung ein

Laut der Antwort https://stackoverflow.com/a/49576954/2914140 in Android Studio 3.1 ist es hier:

Geben Sie hier die Bildbeschreibung ein

Dieser Befehl wird nach verschoben File > Sync Project with Gradle Files.

Geben Sie hier die Bildbeschreibung ein


5
ROFL! Ich habe 2 Tage nach diesem Button gesucht! Vielen Dank!
Swooby

1
@swooby, du bist willkommen. Ich fand es auch einige Zeit, stellte sogar eine Frage und sie halfen.
CoolMind

Diese Option scheint nicht mehr zu existieren? i.imgur.com/cNFUoxB.png (Screenshot wurde gerade in Android Studio 3.5.3 aufgenommen)
Venryx

@Venryx, es ist seltsam. Ich habe 3.6.3 und dieses Menü existiert noch ( imgur.com/a/F8FCpvk ). In jedem Fall ist es besser, eine Schaltfläche in der Symbolleiste zu verwenden.
CoolMind

Es war anscheinend ein Problem mit einigen veralteten AndroidStudio / Gradle-Dateien. Nach dem Löschen und erneuten Importieren des Projekts wurde die Option erneut angezeigt.
Venryx

23

Liebhaber von Tastaturkürzeln können eine Verknüpfung zum manuellen Ausführen der Gradle-Synchronisierung hinzufügen, indem Sie zu Datei -> Einstellungen -> Keymap -> Plugins -> Android-Unterstützung -> Projekt mit Gradle-Dateien synchronisieren (Klicken Sie mit der rechten Maustaste darauf, um eine Tastenkombination hinzuzufügen) -> Übernehmen - > OK und Sie sind fertig. Gradle Sync-TastenkombinationWählen Sie eine geeignete Taste als Verknüpfung für die Gradle-Synchronisierung, die nicht mit einer anderen Tastenkombination in Konflikt steht (ich habe Umschalt + 5 als Gradle-Sync-Taste ausgewählt). Wenn Sie die Gradle-Synchronisierung manuell ausführen möchten, drücken Sie einfach diese Tastenkombination.


2
Es ist 'Android Studio-> Einstellungen' für die ersten beiden Schritte unter Mac OS X
CCJ

1
+1 die beste Antwort auf Frage
nAkhmedov

Beste Antwort: Keine Notwendigkeit, das Sync Project-Symbol von ähnlichen Symbolen von Android Studio zu finden. Drücken Sie einfach Umschalt + 5 und Sie sind fertig.
Ähm. Kaushik Kajavadara

13

Ich gehe davon aus, dass es sich im Hauptmenü von Android Studio um Extras> Android> "Projekt mit Gradle-Dateien synchronisieren" handelt.




1

Ich denke ./gradlew tasksist das gleiche mit Android studio sync. Warum? Ich werde es erklären.

Ich stoße auf ein Problem, wenn ich den Bericht über die Jacoco-Berichterstattung teste. Wenn ich ./gradlew clean :Test:testDebugUnitTestdirekt in der Befehlszeile ausgeführt werde, wird ein Fehler angezeigt.

Error opening zip file or JAR manifest missing : build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_5bdiis3s7lm1rcnv0gawjjfxc/jacocoagent.jar

Wenn ich jedoch zuerst auf Android Studio Sync klicke, wird es in Ordnung ausgeführt. Weil die build/../jacocoagent.jarnatürlich erscheinen. Ich weiß nicht warum, vielleicht gibt es einen Fehler im Jacoco Plugin. Einheit, die ich beim Laufen finde, .gradlew taskslässt das Glas ebenfalls erscheinen. So kann ich das gleiche Ergebnis in Gralde-Skript erhalten.

Außerdem gradle --recompile-scriptsfunktioniert das Problem nicht.


Hallo Victor, ich habe ein Problem, das möglicherweise beweist, dass Sie falsch liegen. Hier ist, was ich habe: Ich habe eine configProductID = 11111 aus meinen gradle.properties festgelegt. Aus meiner build.gradle füge ich "resValue" string hinzu. Wenn ich einen Build bereinige Aus ADT kann die Ressource R.string.ProductID generiert werden. Dann kann ich gradlew assembleDebug erstellen. Dann ändere ich meinen Konfigurationsnamen von "ProductID" in "myProductID". Außerdem wird eine Fehlermeldung angezeigt, dass ich auch "gradlew-Aufgaben" ausführen kann Ich kann 'gradlew clean' nicht machen, alle scheitern einfach. Ich kämpfe immer noch. Wie ". \ Gradlew.bat --recompile-scripts" scheint nicht mehr zu existieren?
yunfei

0

Ich habe ein Problem, das möglicherweise beweist, dass gradlew clean nicht gleich ADT build clean ist. Und jetzt kämpfe ich darum, es zu reparieren.

Folgendes habe ich erhalten: Ich habe eine configProductID = 11111 aus meinen gradle.properties und aus meiner build.gradle festgelegt, füge ich hinzu

resValue "string", "ProductID", configProductID

Wenn ich einen Build Clean von ADT aus durchführe, kann die Ressource R.string.ProductID generiert werden. Dann kann ich den folgenden Befehl erfolgreich ausführen.

gradlew assembleDebug

Da ich jedoch versuche, einen Build-Server einzurichten, möchte ich keine Hilfe von ADT IDE. Daher muss ich vermeiden, ADT Build Clean zu verwenden. Hier kommt mein Problem. Jetzt ändere ich meinen Ressourcennamen von "ProductID" in "myProductID".

gradlew clean

Ich bekomme einen Fehler

PS D:\work\wctposdemo> .\gradlew.bat clean

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\work\wctposdemo\app\build.gradle'

* What went wrong:
Could not compile build file 'D:\work\wctposdemo\app\build.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 57

Wenn ich es versuche mit:

.\gradlew.bat --recompile-scripts

Ich bekomme nur Fehler von

Unknown command-line option '--recompile-scripts'.

Ich habe vor einigen Minuten dieselbe Fehlermeldung erhalten:> Nicht unterstützte Klassendatei Hauptversion 57 Das Problem für mich war, dass gradle mit dem aktuellen openJdk13 unter Linux nicht funktioniert (ich verwende Manjaro ... ein Arch-Like Linux). Um dies zu beheben, habe ich Folgendes getan: Ich habe überprüft, welche Java-Version ich auf meinem PC installiert habe, und die Version 8 ausgewählt: sudo archlinux-java stauts sudo archlinux-java set java-8-openjdk Vielleicht hilft das Sie raus, auch wenn Ihr System Windows zu sein scheint. Versuchen Sie es mit einer anderen SDK-Version. Vielleicht löst es auch Ihr Problem.
Suther

Hallo @suther, vielen Dank für Ihre Antwort, ich habe die Grundursache gefunden und behoben, ich glaube nicht, dass es an der JAVA-Version liegt. Aber wie ich beschrieben habe, ist "gradlew clean" nicht gleich "ADT clean". Mein Fix war einfach "gradlew: app: dependencies". Dadurch werden Ressourcen-IDs aus gradle-Konfigurationsdateien generiert.
Yunfei

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.