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?

Alex Stone
quelle

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

Cai
quelle
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

Hugo Gresse
quelle
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

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

Amrit Pal Singh
quelle
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.

CommonsWare
quelle
6
gradle --recompile-scripts

scheint eine Synchronisierung durchzuführen, ohne etwas zu erstellen. Sie können das automatische Erstellen durch aktivieren

gradle --recompile-scripts --continuous

Weitere Informationen finden Sie in den Dokumenten:

https://docs.gradle.org/current/userguide/gradle_command_line.html

oc1d
quelle
gradle 5.1.1 haben keine option --recompile-scripts
Francis Bacon
2

Verknüpfung (Ubuntu, Windows):

Ctrl + F5

Synchronisiert das Projekt mit Gradle-Dateien.

Andrey
quelle
1
unter MacOS ist die Verknüpfung nicht definiert, man sollte sie zuweisen. Beschrieben unten stackoverflow.com/a/29642935/1839096
Silwester
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.

Victor Choy
quelle
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'.
Yunfei
quelle
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