Android Studio comment exécuter la synchronisation de gradle manuellement?

135

Je débogue les problèmes Gradle dans Android Studio et je vois des références à "Exécuter la synchronisation gradle", mais je ne sais pas comment exécuter cette commande.

Comment exécuter "Gradle sync" depuis un studio Android ou un terminal Mac?

Alex Stone
la source

Réponses:

212

Le studio Android devrait avoir ce bouton dans la barre d'outils marqué "Projet de synchronisation avec les fichiers Gradle"

EDIT: Je ne sais pas quand cela a été changé mais cela ressemble maintenant à ceci:

entrez la description de l'image ici

EDIT: Voici à quoi cela ressemble sur 3.3.1 OU en allant dans Fichier -> Synchroniser le projet avec les fichiers Gradle depuis la barre de menus.entrez la description de l'image ici

Cai
la source
2
manquant dans Adnroid Studio 3.0.1
Roman M
10
@RomanM Il ne manque pas ... Il a été déplacé vers "Fichier" ... Donc, il est à côté de l'icône de sauvegarde
W0rmH0le
49

ATTENTION : la --recompile-scriptscommande est obsolète depuis gradlela version 5.0. Pour vérifier votre gradleversion, exécutez gradle -v.

./gradlew --recompile-scripts

il effectuera une synchronisation sans rien construire.


Alternativement, avec la ligne de commande dans votre projet racine

./gradlew build

Il synchronisera et construira votre application, et prendra plus de temps qu'une simple synchronisation Gradle

Pour voir toutes les tâches de graduation disponibles, utilisez ./gradlew tasks

Hugo Gresse
la source
2
Oui, mais construire en fait plus, non? Quelle est la différence entre sync et build?
JohnyTex
build est une tâche très générique. c'est comme utiliser une masse pour casser une noix. Sur les projets Android, l'exécution de la tâche "build" peut prendre une éternité!
cesards
10
J'utilise com.android.tools.build:gradle:3.5.1,et il n'a pas d'option --recompile-scripts
geosmart
depuis gradle 5.0, --recompile-scripts est devenu une option de ligne de commande inconnue,
Francis Bacon
28

Dans Android Studio 3.3, c'est ici:

entrez la description de l'image ici

Selon la réponse https://stackoverflow.com/a/49576954/2914140 dans Android Studio 3.1, c'est ici:

entrez la description de l'image ici

Cette commande est déplacée vers File > Sync Project with Gradle Files.

entrez la description de l'image ici

CoolMind
la source
5
ROFL! Je cherche depuis 2 jours ce bouton! Merci!
swooby
1
@swooby, vous êtes les bienvenus. Je l'ai aussi trouvé pendant un certain temps, j'ai même posé une question et ils m'ont aidé.
CoolMind
Cette option ne semble plus exister? i.imgur.com/cNFUoxB.png (capture d'écran juste prise, dans Android Studio 3.5.3)
Venryx
@Venryx, c'est étrange. J'ai 3.6.3 et ce menu existe toujours ( imgur.com/a/F8FCpvk ). Quoi qu'il en soit, il est préférable d'utiliser un bouton dans la barre d'outils.
CoolMind
C'était apparemment un problème avec certains fichiers AndroidStudio / Gradle obsolètes. Après les avoir supprimés et réimporté le projet, l'option est réapparue.
Venryx
23

Les amateurs de raccourcis clavier peuvent ajouter un raccourci pour exécuter manuellement la synchronisation des gradins en accédant à Fichier -> Paramètres -> Keymap -> Plugins -> Support Android -> Synchroniser le projet avec les fichiers Gradle (Faites un clic droit dessus pour ajouter un raccourci clavier) -> Appliquer - > OK et vous avez terminé. Raccourci clavier Gradle SyncChoisissez n'importe quelle touche pratique comme raccourci de synchronisation de gradation qui n'entre pas en conflit avec aucune autre touche de raccourci (j'ai choisi Maj + 5 comme clé de synchronisation de gradation), donc ensuite, lorsque vous souhaitez exécuter la synchronisation de gradation manuellement, appuyez simplement sur cette touche de raccourci clavier.

Amrit Pal Singh
la source
2
c'est 'Android Studio-> Préférences' pour les deux premières étapes sur Mac OS X
CCJ
1
+1 la meilleure réponse à la question
nAkhmedov
Meilleure réponse, pas besoin de trouver l'icône du projet de synchronisation à partir d'icônes similaires du studio Android. Appuyez simplement sur Maj + 5 et vous avez terminé.
Euh. Kaushik Kajavadara
13

Je suppose que cela fait référence à Outils> Android> "Projet de synchronisation avec des fichiers Gradle" dans le menu principal d'Android Studio.

CommonsWare
la source
6
gradle --recompile-scripts

semble faire une synchronisation sans rien construire. vous pouvez activer la construction automatique en

gradle --recompile-scripts --continuous

Veuillez consulter la documentation pour plus d'informations:

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

oc1d
la source
gradle 5.1.1 n'ont pas d'option --recompile-scripts
Francis Bacon
2

Raccourci (Ubuntu, Windows):

Ctrl + F5

Synchronisera le projet avec les fichiers Gradle.

Andreï
la source
1
sur le raccourci MacOS n'est pas défini, il faut l'attribuer. Décrit ci-dessous stackoverflow.com/a/29642935/1839096
Silwester
1

Je pense que ./gradlew tasksc'est la même chose avec Android studio sync. Pourquoi? Je vais l'expliquer.

Je rencontre un problème lorsque je teste le rapport de couverture jacoco. Lorsque je lance ./gradlew clean :Test:testDebugUnitTestdirectement en ligne de commande, une erreur apparaît.

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

Cependant, si je clique d'abord sur Android Studio Sync, cela fonctionne correctement. Parce qu'ils build/../jacocoagent.jarapparaissent naturellement. Je ne sais pas pourquoi, peut-être qu'il y a un bug dans le plugin jacoco. L'unité que je trouve en cours d'exécution .gradlew tasksfait également apparaître le pot. Je peux donc obtenir le même résultat dans le script gralde.

En outre, gradle --recompile-scriptsne fonctionne pas pour le problème.

Victor Choy
la source
Salut Victor, j'ai un problème peut vous prouver que vous avez tort, Voici ce que j'ai, j'ai défini un configProductID = 11111 à partir de mon gradle.properties, à partir de mon build.gradle, j'ajoute "resValue" string ". Si je fais un build clean à partir d'ADT, la ressource R.string.ProductID peut être générée. Ensuite, je peux faire gradlew assembleDebug pour construire. Ensuite, je change mon nom de configuration de "ProductID" à "myProductID", j'obtiendrai une erreur pour faire des 'tâches gradlew', aussi Je ne peux pas faire 'gradlew clean', tous échouent. J'ai encore du mal. Comme ". \ Gradlew.bat --recompile-scripts" ne semble plus exister?
yunfei
0

J'ai un problème, peut-être que la preuve que gradlew clean n'est pas égale à ADT build clean. Et maintenant, j'ai du mal à le réparer.

Voici ce que j'ai obtenu: j'ai défini un configProductID = 11111 à partir de mon gradle.properties, à partir de mon build.gradle, j'ajoute

resValue "string", "ProductID", configProductID

Si je fais une compilation propre à partir d'ADT, la ressource R.string.ProductID peut être générée. Ensuite, je peux faire la commande ci-dessous avec succès.

gradlew assembleDebug

Mais, comme j'essaie de configurer le serveur de build, je ne veux pas d'aide d'ADT IDE, donc je dois éviter d'utiliser ADT build clean. Voici mon problème. Maintenant, je change le nom de ma ressource de "ProductID" à "myProductID", je fais:

gradlew clean

Je reçois une erreur

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

Si j'essaye avec:

.\gradlew.bat --recompile-scripts

Je reçois juste une erreur de

Unknown command-line option '--recompile-scripts'.
yunfei
la source
J'ai le même message d'erreur il y a quelques minutes:> Fichier de classe non pris en charge version majeure 57 Le problème pour moi était que gradle ne fonctionne pas avec openJdk13 actuel sur Linux (j'utilise Manjaro ... un Linux Arch-Like). Donc, pour résoudre ce problème, j'ai fait ceci: j'ai vérifié la version Java que j'ai installée sur mon PC et choisi la version 8: sudo archlinux-java stauts sudo archlinux-java set java-8-openjdk Peut-être que cela aide vous, même si votre système semble être Windows. Essayez donc une autre version du SDK. Peut-être que cela résoudra également votre problème.
suther
Salut @suther, merci beaucoup pour votre réponse, j'ai trouvé la cause racine et corrigé, je ne pense pas que ce soit à cause de la version JAVA. Mais comme je l'ai décrit, «gradlew clean» n'est pas égal à «ADT clean». Mon correctif était simplement de faire "gradlew: app: dependencies", cela générera des ID de ressources à partir des fichiers de configuration gradle.
yunfei