我正在尝试重建我的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
Run Code Online (Sandbox Code Playgroud)
在我尝试更改项目的包结构后,这种情况开始发生.不幸的是,我是通过重命名和移动源文件夹而不是通过Android Studio重构来实现的,这是一个坏主意.
我一整天都在寻找解决这个问题的方法,这些都是我试过无用的东西:
gradle和.gradle目录;.gradle我的用户目录中的目录;gradlew clean从AS终端运行;我尝试了一些有点成功的事情,但只让我再次执行一次干净并重新构建错误之前:
java.exe在AS运行时杀死进程(这在技术上可以每次都完成,但是它很繁琐并且减慢了构建过程)所以似乎编译Java进程可能由于某种原因锁定构建文件,但它也可能与Kotlin有关.我有一个(更成熟的)Java Android项目,我正在努力,虽然我在清理时无法重现此错误.这似乎只发生在我的Kotlin项目上.
有任何想法吗?
提前致谢.
我发现问题是由Kotlin Android插件引起的.当我apply plugin: 'kotlin-android'从模块的build.gradle文件中删除时,问题消失,并在重新插入时返回.随意提供任何洞察力.
最后一次更新不是原因.我发现如果一个项目包含一个Kotlin文件,那么重建和清理就会失败.它继续失败,即使所有Kotlin文件都被删除,直到后台Java进程被杀死,这意味着它对构建文件有某种锁定.我在这里提交了一个错误,其中包含更多细节和重现错误的步骤:KT-9440
android kotlin android-studio android-gradle-plugin kotlin-android-extensions
我知道这个问题以前曾被问过,但没有令人满意的答案,上一篇文章是在三年前。我在 Windows 10 中使用 android studio 3.6.2。每次尝试编译程序时,都会收到错误“该进程无法访问该文件,因为它正在被另一个进程使用。”
现在我知道是什么导致了错误。之前编译的R.jar文件无法删除,因为android studio正在锁定该文件。它位于文件夹 \app\build\intermediates\compile_and_runtime_not_namespaced_r_class_jar\debug 中
现在为了解决这个问题,我已经关闭了 android studio。然后删除R.jar,然后重新启动android studio,然后编译。这个过程需要好几分钟,而且我每次都必须这样做。想象一下,当你每次都必须这样做时,编写一个程序需要多长时间。
当在堆栈溢出时询问这个问题时,以前的建议是无效缓存/重新启动,但这并不比我上面所做的更快,而且只能工作一次。也尝试过 Clean Project,但没有效果。
多年来我使用过很多编译器,比如 Visual Studio、CodeBlocks 等,但这种事情以前从未发生过,那么为什么 Android Studio 这么糟糕呢?有人找到解决这个问题的方法了吗?
我刚刚更新了 android studio 3.6.1。这次更新后,我更新了所有插件。现在 Gradle 同步失败。请检查以下错误。
Caused by: org.gradle.tooling.BuildException: Failed to process C:\user\app\build\intermediates\compile_and_runtime_not_namespaced_r_class_jar\debug\R.jar
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\app\build\intermediates\javac\debug\classes
Error while dexing.
Run Code Online (Sandbox Code Playgroud)