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?

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


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


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


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.


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.




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.


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'.

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.