错误:任务':app:clean'的执行失败。无法删除文件

问题描述 投票:142回答:33

我正在尝试重建我的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目录;
  • 从AS终端运行gradlew clean;
  • 手动将源代码复制到一个新项目(奇怪的是它在项目中以某种方式存在......)

我尝试了一些有点成功的事情,但只让我再次执行一次干净并重新构建错误之前:

  • 关闭AS,手动删除构建文件,然后再次打开它;
  • 在AS运行时杀死java.exe进程(这在技术上每次都可以完成,但这很乏味并且减慢了构建过程)

所以似乎编译Java进程可能由于某种原因锁定构建文件,但它也可能与Kotlin有关。我有一个(更成熟的)Java Android项目,我正在努力,虽然我在清理时无法重现此错误。这似乎只发生在我的Kotlin项目上。

更新:

我发现问题是由Kotlin Android插件引起的。当我从模块的apply plugin: 'kotlin-android'文件中删除build.gradle并在重新插入时返回时,问题就消失了。随意提供任何洞察力。

更新2:

最后一次更新不是原因。我发现如果一个项目包含一个Kotlin文件,那么重建和清理就会失败。它继续失败,即使所有Kotlin文件都被删除,直到后台Java进程被杀死,这意味着它对构建文件有某种锁定。我在这里提交了一个错误,其中包含更多细节和重现错误的步骤:KT-9440

android android-studio android-gradle kotlin kotlin-android-extensions
33个回答
120
投票

如果您使用的是Android Studio 2.0 Beta,则可能会出现此问题(如果您正在使用NTFS文件系统,则更有可能),并且看起来“即时运行”是罪魁祸首。在设置中搜索“即时运行”并取消选中该框。

我已经在bug追踪器上提交了issue


3
投票

找到使用app / build / outputs / apk文件夹的程序,然后只删除文件夹。

我认为Android Studio必须在重建之前删除旧的apk文件夹。


3
投票

有时候中间产生问题所以删除它和重建项目

要么

只需运行cmd命令 - > gradlew clean

在工作空间的项目文件夹中(对我而言)


3
投票

我有同样的问题,这对我有用:

  1. 关闭Android Studio。
  2. 删除中间件目录(只要打开Android Studio,此目录就无法删除)
  3. 再次打开Android Studio

3
投票

对我来说,这是因为一个活跃的调试过程。因此,在清理或重建之前,请确保终止所有活动进程。确定成功执行Invalidate Cashes / Restart。


2
投票

我在我的ubuntu中解决了这个问题。

  1. 检查系统中运行的进程(Ubuntu),如Windows中的任务管理器。 Ubuntu终端命令列出所有正在运行的进程---->“gnome-system-monitor”
  2. 终止或结束列表中的JAVA和ANDROID进程。
  3. 再次启动工作室和导入项目。

它对我没有任何问题。希望这可以帮助...

我认为这是已经创建和重复的进程的问题。


2
投票

解决方案非常简单。

这是对我有用的解决方案之一。

您的项目的app / build / outputs / apk文件夹可能已打开。

所以只需关闭此文件夹并重建您的项目。它将被解决。


2
投票

作为suggested in the bug report,取消注释线

idea.jars.nocopy=false

idea.properties文件中为我解决了这个问题。

请注意,每次Android Studio更新时都需要执行此操作。


2
投票

对我来说,罪魁祸首是adb抓住apk文件,因为我利用它通过命令行在我的物理设备上安装和启动应用程序。

简单地说:

任务管理器>结束进程adb.exe

然后可以自由删除文件并清理项目


1
投票

如果您使用本地后端(本地google应用引擎上的java servlet)进行测试,则正在运行的进程会阻止某些文件。所以你无法实时部署。因此,在这种情况下,您可以通过在开始清理或构建之前停止本地后端来解决此问题。您可以在“运行 - >停止后端”下找到该选项。


1
投票

我有同样的错误,尝试了多种方法,但解决方案对我来说是从/ android和/ android / app目录中删除构建文件夹。

运行react-native run-android为我工作。


96
投票

我杀死了任务管理器中的所有java TM进程,它让我重建


1
投票

在Android Studio 3.0中,我遇到了同样的问题。这解决了它:

  1. 关闭工作室
  2. 删除projectRoot / build /和projectRoot / app / build /
  3. 重启Studio

1
投票

我用命令解决了:

taskkill /F /IM java.exe

然后:

gradle assembleDebug 

0
投票

这个问题在android studio 2.0稳定通道中出现,解决方案是由于在更新我的android工作室时发生的问题我通过安装一个新的android工作室解决了这个问题。删除旧安装的所有旧文件后。并保持Instant Run的非常好的功能


0
投票

如果您仍然遇到问题,请更新到最新版本的Android Studio(截至目前为2.1),可能是旧版Android Studio的错误。它现在解决了我。


0
投票

在Android工作室中清理项目并再次运行修复了该问题。也可以做“制作项目”。


0
投票

我有同样的问题,我通过将项目文件夹移动到ext4分区解决了它


0
投票

我通过全局搜索项目中的缺失目录来解决它。然后删除包含该关键字的任何文件。我手动删除所有build.externalNativeBuild目录后,它可以成功清理。


0
投票

我正在使用Android Studio 3.0 Beta 7.清洁项目,无效缓存,重启工作室不起作用但更新Kotlin版本到1.1.51并重新启动工作室为我解决了这个问题。


0
投票

将我的项目从D:移动到G:驱动器后,我遇到了同样的问题,但磁盘检查解决了我的问题

我使用了chkdsk / f / r / x G:**这里使用了一些命令行开关:**

/ F修复磁盘上的错误

/ R定位坏扇区并恢复可读信息(暗示/ F)

/ X如果需要,强制首先卸载卷(暗示/ F)(重要)

注意:/ X很重要,因为它将卸载驱动器,您可以手动删除项目的构建目录,

现在重建项目


0
投票

我的解决方案非常简单(如果您使用的是Windows)。 1-关闭Android Studio。 2-以管理员身份运行Android Studio。 3-就是这样。


35
投票

尝试文件 - >使高速缓存无效并重新启动

这对我有用


0
投票

对我有用的事情是关闭视觉工作室代码并再次打开它...我猜apk文件夹是在代码中打开的......所以试试它也可能对你有用


25
投票

在我向Kotlin bug跟踪器发布了一个错误报告后,我收到了关于AOSP跟踪器的Issue 61300的通知。这似乎是原因。既然我现在无能为力,我会将这个问题标记为已回答,如果修复了错误,我会更新答案。

与此同时,如果你正在运行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任务运行时强制并静默地解锁和删除构建文件。


19
投票

使用此命令gradlew clean从终端清理项目。

enter image description here


12
投票

删除目录intermediates是一个快速解决问题的方法。

重建项目时将重建该目录。


5
投票

我在Android Studio 2.3中遇到了这个问题。

我只是重新启动了Android Studio,之后我可以在没有投诉的情况下进行清理。


4
投票

我在Android Studio 2.2预览版1中遇到了同样的问题,@ AndresSuarez的解决方案是正确的但由于某些原因我在我的任务管理器中找不到JAVA TM进程。所以我尝试了以下解决方案并且它有效 -

打开命令提示符并键入TASKKILL /F /IM java.exe。这将自动终止所有JAVA TM进程。现在再次重新编译应用程序,它将工作。

此外,您可以创建.bat文件,在其中添加上述代码并在每次遇到问题时运行它。


3
投票

对我来说,它有助于我Exit Android Studio,再次单击Clean Project(它出现相同的错误),然后单击Make Project - 当然在Android Studio中的Run 'app'按钮之后。

© www.soinside.com 2019 - 2024. All rights reserved.