Как очистить кеш gradle?

Я пытаюсь использовать Android Studio, и в первый раз, когда я его загружаю, для компиляции требуется 45 минут. Если я не выхожу из приложения, все в порядке - каждая последующая компиляция/запуск приложение займет 45 секунд.

Я попытался проверить некоторые из моих кэшей: там есть папка .gradle/caches в моем домашнем каталоге, и она как 123 МБ большая.

Там также папка .gradle в моей папке проекта... один из taskArtifacts был похож на 200 МБ. Я боюсь просто случайно разжечь их обоих. Какие части папок безопасны для удаления?

Есть ли лучшее объяснение того, почему моя Android-студия навсегда запускает задачу gradle assemble при первой загрузке приложения?

Нужно ли также очищать кеш intellij?

Ответ 1

Вы можете безопасно удалить всю папку .gradle расположенную в каталоге проекта. Он будет воссоздан каждый раз при выполнении задач. То же самое для .gradle в домашнем каталоге. Он также будет воссоздан, но все зависимости должны быть загружены снова - это довольно много времени.

Как я вижу, в различных местах в Интернете разработка приложений для Android идет довольно медленно, и люди жалуются на это. Понятия не имею, что именно причина - это, как это работает.

Я не думаю, что низкая производительность из-за больших папок. На самом деле они помогают ему быть быстрее.

Как отметил @Bradford20000 в комментариях, там может быть файл gradle.properties а также глобальные сценарии gradle, расположенные в $HOME/.gradle. В этом случае особое внимание должно быть уделено удалению содержимого этого каталога. Каталог кеша содержит кеш сборки Gradle. Так что если у вас есть какие-либо ошибки по этому поводу, вы можете удалить это. Это на .gradle/caches

Ответ 2

Gradle кеш находится в

  • В Windows: %USER_HOME%\.gradle/caches/
  • На Mac/Unix: $HOME/.gradle/caches/

Вы можете перейти к этим каталогам и вручную удалить их или запустить

rm -rf $HOME/.gradle/caches/

в системе Unix. Выполнение этой команды также приведет к загрузке зависимостей.

Обновление 2: очистить кэш сборки Android текущего проекта

Примечание: Android Studio File | Invalidate Caches/Restart не очищает кэш сборки Android, поэтому вам придется очищать его отдельно.

В Windows:

gradlew cleanBuildCache

На Mac или Linux:

./gradlew cleanBuildCache

Ответ 3

Новейшее решение с использованием задачи Gradle

cleanBuildCache

доступно через плагин Android для Gradle, редакция 2.3.0 (февраль 2017 г.)

зависимости:

  1. Gradle 3.3 или выше.
  2. Инструменты сборки 25.0.0 или выше.

больше на:

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

фон

Сборка кеша:

хранит определенные выходные данные, которые плагин Android генерирует при сборке вашего проекта (например, неупакованные AAR и предварительно удаленные зависимости). Ваши чистые сборки намного быстрее при использовании кэша, потому что система сборки может просто повторно использовать эти кэшированные файлы во время последующих сборок вместо того, чтобы создавать их заново. Проекты, использующие плагин Android 2.3.0 и выше, по умолчанию используют кэш сборки. Чтобы узнать больше, прочитайте статью Улучшение скорости сборки с помощью Build Cache.

Примечание. Задача cleanBuildCache недоступна, если отключить кэш сборки.

использование:

окна

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 - системные файлы, содержащие скрипты - пожалуйста, смотрите системную информацию о том, как выполнить скрипт

  1. linux - https://www.cyberciti.biz/faq/howto-run-a-script-in-linux/
  2. окна - 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

Ответ 4

Будьте осторожны с демоном gradle, вы должны остановить его до очистки и повторно запустить gradle.

Остановить первого демона:

./gradlew --stop

Очистить кеш, используя:

rm -rf ~/.gradle/caches/

Запустите сборку еще раз

Ответ 5

Демон gradle также создает множество больших текстовых файлов для каждого журнала сборки. Они хранятся здесь:

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

"XX" - это используемая версия gradle, например "4.4", а "XXXX" - просто случайные числа, например "1234".

Общий размер может вырасти до нескольких сотен МБ всего за несколько месяцев. Нет возможности отключить ведение журнала, и файлы не удаляются автоматически, и их на самом деле не нужно сохранять.

Но вы можете создать небольшую задачу для автоматического удаления и освободить много дискового пространства:

Добавьте это в ваше 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()
        }
    }
}

Чтобы увидеть, какие файлы удаляются, вы можете увидеть выходные данные отладки в Android Studio → Вид → Инструмент Windows → Построить. Затем нажмите кнопку "Переключить просмотр" в этом окне, чтобы показать вывод текста.

Обратите внимание, что Gradle Sync или любая Gradle Build вызовут удаление файла.

Лучше всего было бы автоматически переместить файлы в корзину или, по крайней мере, сначала скопировать их в папку "Корзина". Но я не знаю, как это сделать.

Ответ 6

Команда: rm -rf ~/.gradle/caches/

Ответ 7

Кажется, здесь размещена неверная информация. некоторые люди сообщают о том, как очистить кэш cleanBuildCache Android (с помощью задачи cleanBuildCache), но, похоже, не понимают, что указанный кэш не зависит от кэша сборки Gradle, AFAIK.

Насколько я понимаю, кеш Android предшествует (и вдохновлен) кешей Gradle, но я могу ошибаться. будет ли Android-строитель обновлен для использования кэша Gradle и удаления его, я не знаю.

Ответ 8

Если вас интересует весь кеш IntelliJ. Ну вот.

Вам не нужно делать это вручную, пусть IntelliJ сделает это за вас. Зайдите в панель управления и попробуйте удалить ее. Он предлагает вам возможность удалить кэш, а также другие параметры. Подумайте дважды, прежде чем пытаться это сделать. Это может создать другие проблемы, такие как другие ответы, упомянутые по этому поводу.

enter image description here