Android studio очистить кэш

Обновлено: 04.07.2024

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

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

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

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

должен ли я также очистить кэш intellij?

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

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

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

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

вы можете сделать это на Android Studio

обновление: выше метод очистит кэш Android Studio, а не ш кэш. ш кэш находится в

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

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

на система UNIX. Запуск этой команды также заставит загружать зависимости.

Примечание: Android Studio Файл | Аннулировать Кэш/Перезагрузить не очищает кэш сборки Android, поэтому вам придется очищать его отдельно.

на Mac или Linux:

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

cleanBuildCache

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

  1. Gradle в 3.3 или выше.
  2. Build Tools 25.0.0 или выше.

больше at:

построить кэша:

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

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

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

Android Studio / IntelliJ

* * gradle/gradlew система конкретные файлы, содержащие скрипты - пожалуйста, смотрите информацию о системе, как выполнить скрипт

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

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

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

но вы можете создать small gradle задача автоматически удалить их, и освободить много места на диске:

добавьте это в ваш app/build.gradle :

чтобы увидеть, какие файлы удаляются, вы можете увидеть вывод отладки в Android Studio - > View - > Tool Windows - > Build. Затем нажмите кнопку "Toggle View" в этом окне, чтобы отобразить вывод текста.

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

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

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

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

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

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

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

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

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

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

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

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

На Mac или Linux:

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

cleanBuildCache

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

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

больше на:

Сборка кеша:

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

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

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

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

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

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

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

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

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

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

Добавьте это в ваше app/build.gradle :

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

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

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

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

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

Очистить операции кэша, участвующие в процессе разработки Android

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



Нажмите на Clean Project Будет выполнять clean 、 :app:generateDebugSources task

Который выполняет clean Найдем корневой проект и все подпроекты clean задача, так что, в общем, две задачи будут выполнены, :clean и :app:clean 。

  • :clean Удалить / создать папку
  • :app:clean Удалить папку / app / build


аннулировать Caches / Restart удалит кэш андроид студии.
Подробности можно найти в идееОфициальный документ

Этот кеш относится к кешу записей изменений кода, то есть local history Эффект после очистки:

  • Не могу просмотреть local history
  • Все проекты должны быть перестроены

Кажется, что нет никакой разницы между аннулированием Caches / Restart и Rebuild Project.


Удалить корневой каталог проекта .idea/libraries Содержимое каталога или удалить весь каталог.

.idea/libraries Файлы в нем используются для записи классов, javadoc и источников, соответствующих сторонним библиотекам.

После обновления зависимостей и переключения ветки git часто случается, что код определенной библиотеки выдает красный цвет. .idea/libraries Путь внутри не был обновлен, поэтому его не удалось найти.

Удалить /.idea/libraries После повторной синхронизации содержимого они будут восстановлены.

/ .gradle / caches / transforms-1 / files-1.1 /

![ ](https://img-blog.csdn.net/20181014184947225?

/.gradle/caches/transforms-1/files-1.1/ Это каталог, в который разархивированы кэшированные библиотеки.

/.idea/libraries Путь к файлу в здесь.

После удаления каталога или одной из библиотек при повторном выполнении generateDebugSources Не будет перезагружать когда modules-2 Найдите (объясните ниже) каталог и распакуйте его.

/ .gradle / caches / modules-2 / files-2.1 /


/.gradle/caches/modules-2/files-2.1/ Является ли исходный файл для библиотеки кэширования Gradle.

После удаления каталога или одной из библиотек при повторном выполнении generateDebugSources , Он снова будет загружен из сети.



Давайте снова посмотрим на их отношения:

    Первое исполнение generateDebugSources задача, будет в preBuild При загрузке зависимых библиотек в

/.gradle/caches/modules-2/files-2.1/ И распакуйте его, чтобы

Примечание:
make, clean, sync, build и т. д. для Android Studio будут выполнены generateDebugSources task。

Хочется при выходе из программы чистить кэш и по возможности полностью выгрузить его из ОЗУ.

Нашел пару набросков кода, но не знаю какой будет эффективный и более правильный:
Здесь 1 вариант, Здесь 3 варианта

По поводу выгрузки из ОЗУ, как я понял даже при выходе из программы она весит в ОЗУ и в списке недавно запущенных приложений, если ее од туда убрать, то ОЗУ увеличивается.
Такое чувство что с программы не вышел, а свернул ее, хотя пользуюсь вот этим: finish();

И еще подскажите какая разница между finish(); и System.exit(); - что дают значиния int в System.exit(?);

thelongrunsmoke

1. Кэш приложения чистится очень просто. Надо вызвать getCacheDir() на контексте, после чего удалить возвращённую папку. Ещё надо добавить разрешение

2. По поводу выхода из приложения. Вы немного не понимаете как система работает с памятью.
На данный момент, рекомендовано пользоваться finish(). А оперативка будет очищена сборщиком мусора, если будет такая необходимость. В AsynkTask и сервисах используйте слабые ссылки, иначе очистка занимаемой ими памяти не гарантируется.

Chvalov

Александр Варакосов Как мне вызвать метод trimCache в
Или просто убрать static ?

thelongrunsmoke

Простейший способ, использовать getParent(), для обращения к родительской активити. А ещё лучше вынести этот метод в отдельный класс.

Chvalov

b5f60874314e4c65a6d39e876662d847.jpg

Александр Варакосов: Вынес в отдельный класс ClearCache, но все таки как же вызвать trimCache ?

Читайте также: