Ошибка: не удалось выполнить задачу ":app:clean". Невозможно удалить файл
Я пытаюсь перестроить свой проект Android Studio Gradle (содержащий в основном код Kotlin), но он начал бросать UnableToDeleteFileException
во время процесса очистки / восстановления:
Execution failed for task ':app:clean'.
> Unable to delete file: C:\Users\User\KotlinGameEngine\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.0.1\jars\classes.jar
Это начало происходить после того, как я попытался изменить структуру пакета моего проекта. К сожалению, я сделал это путем переименования и перемещения исходных папок, а не рефакторинга через Android Studio, что было плохой идеей.
Я искал решение этой проблемы весь день, и вот что я пытался безрезультатно:
- Выполнение синхронизации Gradle;
- Переустановка Java JRE и Java SDK;
- Переустановка последней версии Android Studio (1.4);
- Откат к предыдущей версии AS (1.3);
- Аннулирование кэша AS и перезапуск;
- Удаление
gradle
а также.gradle
каталоги в каталоге проекта; - Удаление
.gradle
каталог в моем пользовательском каталоге; - Бег
gradlew clean
от терминала AS; - Ручное копирование исходников в новый проект (странно, что он как-то сохраняется в разных проектах...)
Вещи, которые я попробовал с небольшим успехом, но позволили мне выполнить еще одну очистку и перестроить, прежде чем ошибка возникнет снова:
- Закрытие AS, удаление файлов сборки вручную и повторное его открытие;
- Убивать
java.exe
процесс во время работы AS (технически это можно сделать каждый раз, но это утомительно и замедляет процесс сборки)
Поэтому кажется, что процесс компиляции Java может по какой-то причине блокировать файлы сборки, но это также может быть связано с Kotlin. У меня есть (более зрелый) проект Java Android, над которым я работаю, хотя я не могу воспроизвести эту ошибку при очистке. Кажется, это случилось только с моим проектом Kotlin.
Есть идеи?
Заранее спасибо.
Обновить:
Я обнаружил, что проблема вызвана плагином Kotlin для Android. Проблема исчезает при удалении apply plugin: 'kotlin-android'
из модуля build.gradle
файл и возвращается, когда я его снова вставляю. Не стесняйтесь предложить любое понимание этого.
Обновление 2:
Последнее обновление не является причиной. Я обнаружил, что если проект содержит файл Kotlin, то восстановление и очистка завершаются неудачно. Он продолжает давать сбой, даже если все файлы Kotlin удалены, пока не завершится фоновый Java-процесс, что означает, что он имеет некоторую блокировку для файлов сборки. Я представил ошибку здесь с более подробной информацией и инструкциями по ее воспроизведению: KT-9440
42 ответа
После того, как я опубликовал отчет об ошибках в трекере ошибок Kotlin, я был уведомлен о проблеме 61300 на трекере AOSP. Это, кажется, причина. Поскольку в данный момент я ничего не могу сделать, я отмечу этот вопрос как ответивший и обновлю ответ, если ошибка будет исправлена.
В то же время, если вы работаете с Windows, я считаю, что нашел обходной путь. Вам нужно скачать LockHunter (на свой страх и риск, конечно), а затем добавить следующее в ваш модуль gradle.build
файл, заменив lockhunter
переменная с вашим путем к LockHunter.exe:
task clean(type: Exec) {
ext.lockhunter = '\"C:\\LockHunter.exe\"'
def buildDir = file(new File("build"))
commandLine 'cmd', "$lockhunter", '/delete', '/silent', buildDir
}
Это заставляет LockHunter принудительно и бесшумно разблокировать и удалять файлы сборки при запуске задачи app:clean.
Я убил все процессы Java Java в диспетчере задач, и это позволило мне восстановить
Если вы используете Android Studio 2.0 Beta, эта проблема может появиться (более вероятно, если вы работаете с файловой системой NTFS), и кажется, что "Instant Run" является виновником. Ищите "Instant Run" в настройках и снимите флажок.
Я подал проблему на трекер ошибок.
Попробуйте File -> Invalidate Caches и перезапустите
Это сработало для меня
Я решил с командой:
taskkill /F /IM java.exe
а потом:
gradle assembleDebug
Удаление каталога intermediates
это быстрое решение проблемы.
Каталог будет перестроен, когда проект будет перестроен.
Я столкнулся с той же проблемой в Android Studio 2.2 preview 1, решение @AndresSuarez было правильным, но по некоторым причинам я не смог найти процесс JAVA TM в своем диспетчере задач. Поэтому я попробовал следующее решение, и оно сработало:
Откройте командную строку и введите TASKKILL /F /IM java.exe
, Это автоматически убьет все процессы JAVA TM. Теперь заново скомпилируйте приложение, оно будет работать.
Кроме того, вы можете создать файл .bat, добавить в него приведенный выше код и запускать его каждый раз, когда сталкиваетесь с проблемой.
У меня была такая же проблема, и это сработало для меня:
- закрыть Android Studio.
- удалить каталог промежуточных файлов (пока открыт Android Studio, этот каталог нельзя удалить)
- снова откройте Android Studio
Для меня это произошло из-за активного процесса отладки. Итак, прежде чем чистить или перестраивать, обязательно убейте все активные процессы. Чтобы добиться успеха, выполните Invalidate Cashes / Restart.
У меня была эта проблема в Android Studio 2.3.
Я просто перезапустил Android Studio и после этого смог убрать без нареканий.
Для меня виновником является adb, удерживающий файл apk, поскольку я использую его для установки и запуска приложения на моем физическом устройстве через командную строку.
Так просто:
Диспетчер задач> Завершить процесс adb.exe
И тогда файл может быть свободно удален, и проект может быть очищен
Для меня это помогает, когда я Exit Android Studio
нажмите еще раз Clean Project
(появляется та же ошибка) и следующий клик Make Project
- после этого конечно Run 'app'
кнопка в Android Studio.
Иногда посредники создают проблему, поэтому удалите ее и перестройте проект
ИЛИ ЖЕ
просто запустите команду cmd - > gradlew clean
в папке вашего проекта в рабочем пространстве (его работа для меня)
Найдите программы, которые использовали папку app/build/output /apk, затем просто удалите папку.
Я думаю, что Android Studio должна удалить старую папку apk перед перестройкой.
Решение довольно простое.
Это одно из решений, которое сработало для меня.
Вполне возможно, что папка app/build/output /apk вашего проекта открыта.
так что просто закройте эту папку и пересоберите свой проект. и это будет решено.
В моем случае я разрешаю это -
- Сначала закройте приложение, если оно запущено в эмуляторе.
- Затем запустите команду
gradle --stop
в Терминале в студии Android. - Затем очистите проект и перестройте проект
Я решил это в моей Ubuntu, как это.
Проверьте процессы, запущенные в вашей системе (Ubuntu), как в диспетчере задач в Windows.
Команда терминала Ubuntu для вывода списка всех запущенных процессов ----> "gnome-system-monitor"
Завершите или завершите процессы JAVA и ANDROID в списке.
- Снова запустите студию и импортируйте проект.
Это работает для меня без проблем. Надеюсь это поможет...
Я думал, что это проблема с процессом, который уже создан и дублирован.
Как указано в сообщении об ошибке, раскомментируйте строку
idea.jars.nocopy=false
в idea.properties
файл решил проблему для меня.
Обратите внимание, что это нужно делать каждый раз, когда обновляется Android Studio.
В Android Studio 3.0 у меня была такая же проблема. Это исправило это:
- Закрыть студию
- Удалить projectRoot/build/ и projectRoot/app/build/
- Рестарт Студия
реагировать на разработчиков
пробег
sudo cd android && ./gradlew clean
и если вы хотите выпустить apk
sudo cd android && ./gradlew assembleRelease
Надеюсь, это кому-то поможет
Я просто запускаю команду cmd - > gradlew clean, и это решает проблему
Эта проблема появилась у меня в стабильном канале Android Studio 2.0, и решение было связано с проблемой, возникшей при обновлении моей Android-студии. Я решил эту проблему, установив свежую Android-студию. после удаления всех старых файлов для старой установки. и сохранить очень приятную особенность Instant Run
У меня была та же самая ошибка, пробовал несколько способов, но решение работало для меня, чтобы удалить папки сборки из каталогов /android и /android/app.
бежать react-native run-android
работал на меня.
Другое приложение, которое может использовать ресурсы, - это, по-видимому, Android Studio Kotlin REPL. Я закрыл это, и тогда я смог построить снова без проблем.
Я решил для себя именно эту проблему.
Проблема заключалась в том, что кто-то другой создал файл, поэтому, хотя у меня есть права администратора на компьютере, я не смог внести изменения в файл или файлы. Вам нужно зайти в свойства файла или папки и изменить владельца или добавить владельца. Эта веб-страница шаг за шагом объясняет, что вам нужно делать.
Как только я сделал это, я нашел файл в проводнике и вручную извлек его. Я не думаю, что он нужен в проекте студии Android, если он все равно пытался его удалить.
У меня возникла та же проблема после переноса моего проекта с диска D: на диск G:, но проверка диска решила мою проблему
Я использовал chkdsk / f / r / x G:** здесь были использованы некоторые параметры командной строки: **
/ F Исправляет ошибки на диске
/R Находит плохие сектора и восстанавливает читаемую информацию (подразумевается / F)
/ X Вынуждает том сначала отключаться при необходимости (подразумевается /F) (важно)
Примечание: /X важно, потому что он отключит диск, и вы можете вручную удалить каталог сборки вашего проекта,
сейчас пересобери проект
Мое решение для этого было очень очень простым (если вы используете Windows). 1- Закройте Android Studio. 2- Запустите Android Studio от имени администратора. 3- Вот и все.
Я попытался удалить все службы Java, но все еще не работает при выполнении команды gradlew clean build из терминала IntelliJ. Я даже проверил другие приложения, которые я открыл где-то по тому же пути, который я пытаюсь удалить. Но не нашел ни одного. Итак, наконец, перезапустил IntelliJ IDE и смог продолжить сборку без проблем.
Я решил это глобальным поиском отсутствующего каталога в проекте. затем удалите все файлы, содержащие это ключевое слово. он может успешно очистить после удаления всех build
а также .externalNativeBuild
каталоги вручную.