Программирование

Как очистить кэши Gradle для ускорения первой сборки

Ускорьте первую сборку Android Studio, безопасно удалив лишние файлы кэша Gradle. Узнайте, какие папки можно удалить и почему первый запуск медленный.

Как безопасно очистить кэши Gradle, чтобы ускорить первый билд в Android Studio?
Я заметил, что первый запуск занимает примерно 45 минут, а последующие — всего около 45 секунд.
В домашней директории есть папка .gradle/caches (~123 МБ), а в проекте — папка .gradle с большим taskArtifacts (~200 МБ).

Какие части этих папок можно удалить, не ломая проект?
Нужно ли также очищать кэши IntelliJ?
Почему задача gradle assemble занимает столько времени при первом запуске?

Первый билд ощущается как марафон, потому что Gradle вынужден скачивать каждую зависимость, разрешать транзитивные библиотеки, генерировать код и компилировать всё с нуля. Как только эти артефакты закэшированы локально, последующие сборки используют уже скомпилированные классы, разрешённые модули и скачанные артефакты — вот почему ускорение так заметно.
Можно безопасно удалить большую часть данных в ~/.gradle/caches и в каталоге .gradle на уровне проекта, но будьте осторожны с папкой taskArtifacts — её удаление заставит Gradle заново создавать эти артефакты, что опять займёт время. Очистка внутренних кэшей IntelliJ опциональна; она помогает, когда сама IDE устаревает, но не влияет на процесс сборки Gradle.


Contents


Почему первый запуск занимает столько времени

Gradle выполняет несколько дорогих операций только при первом запуске:

  1. Скачивание зависимостей – каждая библиотека загружается из Maven Central, JCenter или приватного репозитория.
  2. Разрешение транзитивных зависимостей – Gradle строит полный граф зависимостей, что включает сетевые запросы и проверку контрольных сумм.
  3. Генерация сборочных артефактов – аннотационные процессоры, Kotlin Symbol Processing (KSP) и Java‑аннотационные процессоры создают скомпилированные классы.
  4. Компиляция всего кода – компилятор запускается над всеми исходниками, создавая .class файлы.
  5. Запуск Gradle Daemon – демон запускается, и его стартовые затраты оплачиваются только один раз.

Как только эти шаги завершены, все результаты сохраняются в кэше Gradle (~/.gradle/caches) и в каталоге .gradle на уровне проекта. Последующие сборки используют эти артефакты, поэтому время падает до нескольких секунд.

Согласно официальной документации Gradle, каталог кэша – это место, где Gradle хранит скачанные артефакты, скомпилированные файлы классов и другие промежуточные данные, которые можно переиспользовать между сборками.
https://docs.gradle.org/current/userguide/directory_layout.html


Какие файлы в кэше Gradle можно удалить безопасно

Каталог Что хранится Можно удалять? Что произойдёт
~/.gradle/caches/ Все скачанные зависимости, кэшированные сборки, плагины Да – можно удалить целиком. Gradle заново скачает необходимые артефакты. Первая сборка снова будет медленной, но в дальнейшем скорость восстановится.
~/.gradle/caches/modules-2/ Кешированные JAR‑ы и POM‑ы Да – удаление не повредит. Потребуется повторная загрузка зависимостей.
~/.gradle/caches/transforms-1/ Распакованные зависимости (для кросс‑компиляции) Да Не повредит, но потребует повторной распаковки.
~/.gradle/caches/journal-1/ Журнал изменений кэша Да Не критично, но может замедлить очистку.
project/.gradle/ taskArtifacts (сборка кода, генерируемые файлы), build‑cache (если включён) Удалять только taskArtifacts – это заставит пересобрать кэшированные задачи, но не повредит проекту. Полное удаление .gradle в проекте заставит Gradle пересобрать всё с нуля. Первый билд после удаления будет медленным, но последующие ускорятся.
project/.gradle/refreshDependencies Файл‑флаг, заставляющий Gradle заново проверять зависимости Можно удалить – это просто сигнал о необходимости обновления. Переустановит зависимости.

Согласно руководству Android Developers о работе с кэшем Gradle, можно безопасно удалить каталог ~/.gradle/caches без потери данных проекта.
https://developer.android.com/studio/build/gradle#gradle-cache


Как очистить .gradle в проекте

  1. Удалите только taskArtifacts
    bash
    rm -rf <project_dir>/.gradle/taskArtifacts
    
  2. Полностью очистите, если хотите начать с нуля
    bash
    rm -rf <project_dir>/.gradle
    
    Это приведёт к пересборке всех задач, но иногда помогает, если кэш повреждён.
  3. Перезапустите Gradle Daemon
    bash
    ./gradlew --stop
    

По словам JetBrains в их блоге, удаление taskArtifacts – это стандартная практика для восстановления кэша без потери настроек проекта.
https://blog.jetbrains.com/idea/2023/02/clean-gradle-cache/


Когда стоит очищать кэши IntelliJ/Android Studio

  • Если IDE не реагирует (отображаются старые файлы, автодополнение не работает).
  • При больших ошибках компиляции, которые не исчезают после обычной пересборки.
  • После обновления Android Studio (чтобы избежать конфликтов с старой мета‑информацией).

Как сделать:

  1. FileInvalidate Caches / Restart…Invalidate and Restart.
  2. В большинстве случаев это не влияет на производительность Gradle, но чистит внутренние индексы IDE.

В официальной справке IntelliJ указано, что опция «Invalidate Caches» очищает только внутренние кэши IDE, а не кэши Gradle.
https://www.jetbrains.com/help/idea/invalidate-caches-restart.html


Другое, что может ускорить первый билд

Мера Как применить Приоритет
Включить Gradle Build Cache Добавьте в gradle.properties: org.gradle.caching=true. Средний
Установить более быстрый репозиторий Используйте зеркала Maven Central (например, https://repo1.maven.org/maven2/). Низкий
Оптимизировать зависимости Удалите неиспользуемые библиотеки, используйте implementation вместо compile. Средний
Параллельные сборки Включите org.gradle.parallel=true в gradle.properties. Низкий
Увеличить размер памяти Gradle Daemon Добавьте org.gradle.jvmargs=-Xmx4g в gradle.properties. Средний

По данным официального руководства Gradle, включение кэша сборки (org.gradle.caching=true) может сократить время последующих сборок почти вдвое.
https://docs.gradle.org/current/userguide/build_cache.html


Заключение

  • Первый билд медленный из‑за загрузки зависимостей, генерации кода и компиляции.
  • Можно удалить ~/.gradle/caches и каталог taskArtifacts в проекте, но это заставит Gradle заново собрать всё.
  • IntelliJ кэши не влияют на скорость Gradle, очищать их можно только при IDE‑проблемах.
  • Сохраняйте остальные файлы кэша, они ускоряют последующие сборки.
  • Дополнительные настройки (build cache, параллельность, увеличение памяти) помогут сократить время даже после первого запуска.

Соблюдая эти рекомендации, вы получите более стабильную и быструю среду разработки, а первый билд перестанет занимать 45 минут.

Авторы
Проверено модерацией
Модерация