Ошибка: не удалось выполнить задачу ":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 и перезапустите

Это сработало для меня

Очистите проект от Терминала с помощью этой команды 'gradlew clean'.

Я решил с командой:

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, добавить в него приведенный выше код и запускать его каждый раз, когда сталкиваетесь с проблемой.

У меня была такая же проблема, и это сработало для меня:

  1. закрыть Android Studio.
  2. удалить каталог промежуточных файлов (пока открыт Android Studio, этот каталог нельзя удалить)
  3. снова откройте 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 вашего проекта открыта.

так что просто закройте эту папку и пересоберите свой проект. и это будет решено.

В моем случае я разрешаю это -

  1. Сначала закройте приложение, если оно запущено в эмуляторе.
  2. Затем запустите команду gradle --stopв Терминале в студии Android.
  3. Затем очистите проект и перестройте проект

Я решил это в моей Ubuntu, как это.

  1. Проверьте процессы, запущенные в вашей системе (Ubuntu), как в диспетчере задач в Windows.

    Команда терминала Ubuntu для вывода списка всех запущенных процессов ----> "gnome-system-monitor"

  2. Завершите или завершите процессы JAVA и ANDROID в списке.

  3. Снова запустите студию и импортируйте проект.

Это работает для меня без проблем. Надеюсь это поможет...

Я думал, что это проблема с процессом, который уже создан и дублирован.

Как указано в сообщении об ошибке, раскомментируйте строку

idea.jars.nocopy=false

в idea.properties файл решил проблему для меня.

Обратите внимание, что это нужно делать каждый раз, когда обновляется Android Studio.

В Android Studio 3.0 у меня была такая же проблема. Это исправило это:

  1. Закрыть студию
  2. Удалить projectRoot/build/ и projectRoot/app/build/
  3. Рестарт Студия

реагировать на разработчиков

пробег

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 каталоги вручную.