我正在尝试重建我的 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,手动删除构建文件,再次打开;
- 在AS
java.exe
运行时终止进程(从技术上讲,这可以每次都完成,但它很乏味并且会减慢构建过程)
因此,似乎编译 Java 过程可能会出于某种原因对构建文件进行锁定,但它也可能与 Kotlin 有关。我有一个(更成熟的)Java Android 项目,我正在处理它,但在清理它时我无法重现此错误。它似乎只发生在我的 Kotlin 项目中。
更新:
我发现问题是由 Kotlin Android 插件引起的。apply plugin: 'kotlin-android'
当我从模块的文件中删除时问题消失了build.gradle
,当我重新插入它时又回来了。随时提供对此的任何见解。
更新 2:
上次更新不是原因。我发现如果一个项目包含一个 Kotlin 文件,那么重建和清理就会失败。即使删除了所有 Kotlin 文件,它也会继续失败,直到后台 Java 进程被杀死,这意味着它对构建文件有某种锁定。我在这里提交了一个错误,其中包含更多详细信息和重现错误的步骤:KT-9440