我正在尝试重建我的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