web-dev-qa-db-fra.com

Comment vider le cache de gradles?

J'essaie d'utiliser Android Studio et la première fois que je le démarre, la compilation prend environ 45 minutes ... Si je ne quitte pas l'application, tout va bien, chaque compilation/exécution ultérieure nécessitera comme 45 secondes.

J'ai essayé de vérifier certaines de mes caches: il y a un dossier .gradle/caches dans mon répertoire personnel, et sa taille est d'environ 123 Mo.

Il y a aussi un dossier .gradle dans mon dossier de projet ... l'une des taskArtifacts faisait 200 Mo environ. J'ai peur de les détruire tous les deux au hasard. Quelles parties des dossiers peuvent être supprimées en toute sécurité?

Existe-t-il une meilleure explication de la raison pour laquelle mon Android Studio prend depuis toujours pour exécuter la tâche gradle assemble lors du premier chargement de l'application?

Dois-je aussi effacer le cache intellij aussi?

185
David T.

Vous pouvez supprimer en toute sécurité l'intégralité du dossier .gradle situé sous le répertoire du projet. Il sera recréé chaque fois que les tâches sont exécutées. Il en va de même pour .gradle dans le répertoire personnel. Il sera également recréé, mais toutes les dépendances doivent être à nouveau téléchargées - cela prend beaucoup de temps.

Comme je le vois à divers endroits sur Internet, le développement d'Android est assez lent et les gens s'en plaignent. Aucune idée de la raison exacte, voici comment cela fonctionne.

Je ne pense pas que les faibles performances soient dues aux gros dossiers. En fait, ils l’aident à être plus rapide. </ S>

Comme @ Bradford20000 l'a souligné dans les commentaires, il peut exister un fichier gradle.properties ainsi que des scripts de dégradé globaux situés sous $HOME/.gradle. Dans ce cas, une attention particulière doit être portée lors de la suppression du contenu de ce répertoire . Le répertoire de cache contient le cache de construction Gradle. Donc, si vous avez une erreur à ce sujet, vous pouvez le supprimer. C'est sur .gradle/caches

210
Opal

Gradle cache localise à 

  • Sous Windows: %USER_HOME%\.gradle/caches/
  • Sur Mac/Unix: $HOME/.gradle/caches/

Vous pouvez parcourir ces répertoires et les supprimer manuellement ou les exécuter. 

rm -rf $HOME/.gradle/caches/

sur le système Unix. Exécuter cette commande forcera également à télécharger les dépendances.

Mise à jour 2:Efface le cache de construction Android du projet en cours

Remarque: Fichier | Invalidate Caches/Restart n'efface pas le cache de génération Android, vous devrez donc le nettoyer séparément.

Sous Windows:

gradlew cleanBuildCache

Sur Mac ou Linux:

./gradlew cleanBuildCache
221
Bao Le

Nouvelle solution utilisant la tâche gradle 

cleanBuildCache

disponible via le plugin Android pour Gradle, révision 2.3.0 (février 2017)

Les dépendances: 

  1. Gradé 3.3 ou supérieur.
  2. Build Tools 25.0.0 ou supérieur.

Plus à:

https://developer.Android.com/studio/build/build-cache.html#clear_the_build_cache

contexte 

Build cache:

stocke certaines sorties générées par le plug-in Android lors de la construction de votre projet (telles que les AAR non emballés et les dépendances distantes pré-indexées). Lorsque vous utilisez le cache, vos nouvelles générations sont beaucoup plus rapides car le système de génération peut simplement réutiliser ces fichiers mis en cache lors des générations suivantes au lieu de les recréer. Les projets utilisant le plugin Android 2.3.0 et supérieur utilisent le cache de construction par défaut. Pour en savoir plus, lisez Améliorer la vitesse de construction avec le cache de construction.

Remarque: La tâche cleanBuildCache n'est pas disponible si vous désactivez le cache de construction.

usage:

les fenêtres 

gradlew cleanBuildCache

linux/mac

gradle cleanBuildCache

Android Studio/IntelliJ

gradle tab (default on right) select and run the task or add it via the configuration window 

** gradle/gradlew sont des fichiers spécifiques au système contenant des scripts - veuillez consulter les informations système pour savoir comment exécuter le script 

  1. linux - https://www.cyberciti.biz/faq/howto-run-a-script-in-linux/
  2. windows - https://technet.Microsoft.com/en-us/library/bb613481(v=vs.85).aspx
  3. mac https://developer.Apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/index.html
44
ceph3us

Faites attention avec le démon gradle, vous devez l'arrêter avant d'effacer et réexécuter gradle.

Arrêtez le premier démon:

./gradlew --stop

Nettoyer le cache avec:

rm -rf ~/.gradle/caches /

Relance ta compilation

3
rresino

Le démon gradle crée également de nombreux fichiers texte volumineux à partir de chaque journal de construction. Ils sont stockés ici:

~/.gradle/daemon/X.X/daemon-XXXX.out.log

"X.X" est la version en cours d'utilisation, comme "4.4", et "XXXX" ne sont que des nombres aléatoires, comme "1234".

La taille totale peut atteindre plusieurs centaines de Mo en quelques mois. Il n'y a aucun moyen de désactiver la journalisation, et les fichiers ne sont pas automatiquement supprimés et ils n'ont pas vraiment besoin d'être conservés.

Mais vous pouvez créer une tâche small gradle pour les supprimer automatiquement et libérer beaucoup d’espace disque:

Ajoutez ceci à votre app/build.gradle:

Android {

    buildTypes {
        ...
    }

    // Delete large build log files from ~/.gradle/daemon/X.X/daemon-XXX.out.log
    // Source: https://discuss.gradle.org/t/gradle-daemon-produces-a-lot-of-logs/9905
    def gradle = project.getGradle()
    new File("${gradle.getGradleUserHomeDir().getAbsolutePath()}/daemon/${gradle.getGradleVersion()}").listFiles().each {
        if (it.getName().endsWith('.out.log')) {
            // println("Deleting gradle log file: $it") // Optional debug output
            it.delete()
        }
    }
}

Pour voir quels fichiers sont supprimés, vous pouvez voir la sortie de débogage dans Android Studio -> Affichage -> Fenêtre outil -> Construire. Puis appuyez sur le bouton "Basculer la vue" sur cette fenêtre pour afficher la sortie texte.

Notez qu'une synchronisation Gradle ou toute construction Gradle déclenchera les suppressions de fichier.

Un meilleur moyen serait de déplacer automatiquement les fichiers vers la Corbeille/Corbeille ou au moins de les copier d'abord dans un dossier Corbeille. Mais je ne sais pas comment faire ça.

2
Mr-IDE

il semble y avoir des informations incorrectes publiées ici. Certaines personnes expliquent comment vider le cache de constructeur Android (avec la tâche cleanBuildCache), mais ne semblent pas se rendre compte que ce cache est indépendant du cache de compilation de Gradle, autant que je sache.

à ma connaissance, le cache d'Android est antérieur à Gradle (et inspiré), mais je peux me tromper. si le constructeur Android sera/a été mis à jour pour utiliser le cache de Gradle et retirer le sien, je ne le sais pas.

0
Lanchon

Commande: rm -rf ~/.gradle/caches/

0
Zinan Xing