Ошибка Unable to delete file при clean в Android/Kotlin проекте
Причина ошибки
Ошибка Unable to delete file при выполнении clean в Gradle возникает, когда система не может удалить файлы из папки build/. Основные причины:
- Файлы заблокированы Windows: ОС (особенно Windows) может блокировать файлы, если они открыты в другом процессе (например, в проводнике, антивирусе или даже в самой Android Studio).
- Антивирус или защитник Windows: Некоторые антивирусы сканируют файлы в реальном времени и временно блокируют их удаление.
- Долгие пути (path length issue): В Windows есть ограничение на длину пути (260 символов), и файлы в
build/часто имеют очень длинные имена. - Индексация или поиск: Службы индексации (например, Windows Search) могут удерживать файлы.
Решение: пошаговая инструкция
Вот проверенные способы, которые помогают в 95% случаев:
1. Закройте все внешние программы
Перед выполнением clean закройте:
- Проводник Windows, открытый в папке проекта
- Любые IDE (кроме Android Studio, которая выполняет clean)
- Антивирус временно отключите (или добавьте папку проекта в исключения)
2. Используйте терминал с правами администратора
Откройте терминал Android Studio или командную строку от имени администратора и выполните:
cd "D:\Projects\MyApp"
gradlew clean --no-daemon
Флаг --no-daemon гарантирует, что Gradle-демон не будет мешать удалению файлов.
3. Включите поддержку длинных путей в Windows (рекомендуется)
Откройте Редактор реестра (regedit) и перейдите к:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Найдите параметр LongPathsEnabled и установите его значение в 1. Если его нет — создайте DWORD (32 бита) с таким именем. После этого перезагрузите компьютер.
4. Добавьте исключение в антивирус
Добавьте папку D:\Projects\MyApp в исключения вашего антивируса. Для Защитника Windows:
- Настройки → Конфиденциальность и безопасность → Защита от вирусов и угроз → Управление настройками → Исключения
- Добавьте папку проекта
5. Ручное удаление в крайнем случае
Если ничего не помогает, закройте Android Studio и вручную удалите папку build через командную строку (администратор):
rmdir /s /q "D:\Projects\MyApp\app\build"
Или используйте Shift+Delete в проводнике (но сначала закройте все программы).
6. Измените настройки Gradle (профилактика)
Добавьте в gradle.properties (в корне проекта):
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -Djava.io.tmpdir=C:\Temp
Это перенаправит временные файлы Gradle в другую папку, уменьшив нагрузку на основную директорию.
Почему это происходит именно на Windows?
Android-проекты на Kotlin генерируют тысячи файлов с длинными именами (например, classes.dex, R.txt). Windows по умолчанию ограничивает длину пути 260 символами, а антивирусы часто блокируют операции удаления. На macOS и Linux эта проблема встречается гораздо реже.
После выполнения всех шагов ошибка должна исчезнуть. Если нет — проверьте, не используете ли вы сетевой диск или облачную синхронизацию (OneDrive, Dropbox) — они тоже могут блокировать файлы.
<<Альтернативный подход: использование Gradle Wrapper с правами администратора
Если предыдущее решение не помогло, проблема может быть в том, что Gradle-демон удерживает файлы. Попробуйте следующий метод:
1. Остановите все Gradle-демоны
Выполните в терминале (от имени администратора):
gradlew --stop
Это завершит все работающие демоны Gradle, которые могли заблокировать файлы.
2. Очистите кеш Gradle
Иногда проблема в повреждённом кеше. Удалите папку .gradle в домашней директории пользователя (обычно C:\Users\ВашеИмя\.gradle) — но только папку, не файл gradle.properties. Затем перезапустите проект.
3. Используйте cleanBuildCache
Добавьте в build.gradle.kts проекта (не модуля) задачу:
tasks.register("cleanBuildCache") {
delete(layout.buildDirectory)
}
Затем выполните gradlew cleanBuildCache — это удалит всю папку build одной командой, минуя стандартную задачу clean, которая часто спотыкается на отдельных файлах.
4. Проверьте права доступа
Убедитесь, что у вашего пользователя есть полные права на папку проекта. Кликните правой кнопкой по папке → Свойства → Безопасность → Изменить → дайте полный доступ для вашей учётной записи.
Этот метод особенно полезен, если вы работаете в корпоративной среде с ограничениями безопасности.
Ответов пока нет.
Войдите чтобы оставить ответ