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?
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
Gradle cache localise à
%USER_HOME%\.gradle/caches/
$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
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:
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
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
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.
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.
Commande: rm -rf ~/.gradle/caches/