使用数据绑定清除项目错误:无法删除文件 androidx.databinding.library.baseAdapters--setter_store.json

Clean project error with databinding: Unable to delete file androidx.databinding.library.baseAdapters--setter_store.json

我使用数据绑定。有时,当我进行更改时,项目可能会被破坏。然后我去 Build -> Clean project & Re-Build project。我得到了一些奇怪的错误:

Unable to delete file: {path_to_project}\app\build\intermediates\data_binding_dependency_artifacts\debug\dataBindingMergeDependencyArtifactsDebug\out\androidx.databinding.library.baseAdapters--setter_store.json

每次我都不知道如何修复它,因为我在清理或重建时遇到此错误。即使我使缓存无效/重新启动问题也没有消失。

如果我尝试手动删除此文件,我会收到错误消息,指出该文件正在被另一个进程使用。然后我关闭项目并成功删除了这个文件。但是当我打开项目并构建它时,我遇到了与上述相同的错误。

据我所知,问题与数据绑定有关,但我不确定,因为我在 Whosebug 上的其他用户的其他文件中看到了同样的问题。有时问题会自行消失,但通常不会。可能是layout文件有问题,但是如果build log没有错误怎么查呢

有人遇到过这个错误吗?有什么想法可以解决这种情况,而不会在未定义的时间范围内破坏整个项目吗?

尝试在 gradle.properties

中禁用守护进程和并行构建
org.gradle.daemon=false
org.gradle.parallel=false

首先按照这 4 个步骤

  • 删除生成的文件(生成文件夹)
  • 清理您的项目(只需 运行 cmd 命令 -> gradlew clean
  • 使缓存无效并重新启动 Android Studio
  • 重启电脑

如果没有帮助,请尝试以下步骤

  • Gradle同步;
  • 重新安装Java JRE & Java SDK;
  • 重新安装最新版本的 Android Studio
  • 回滚到以前的 AS 版本
  • 使缓存无效并重新启动 Android Studio
  • 删除项目目录下的gradle和.gradle目录;
  • 删除您目录中的 .gradle 目录;
  • 运行 gradlew clean(只需 运行 cmd 命令 -> gradlew clean

我关闭 Android Studio,删除 app\build 文件夹,然后重新打开 Android Studio。请注意,必须关闭所有 AS 实例才能让 Windows 删除构建文件夹。

所以,问题仍然存在,但所有的答案都没有解决它。项目没有编译是有原因的,通常是某种错误,如果你只是删除构建文件夹(其中包含文件 Android Studio 无法删除)它不会解决问题

当您尝试编译项目时,您可能会在生成的文件(数据绑定、空间等)中遇到许多错误。不幸的是,通常 window 中不会显示错误,但是如果您扩展这个生成的有错误的文件,您可能会看到真正的问题,您没有修复的错误何时更改与生成的文件相关的 类。 只需修复这些错误并重新编译项目。 注意:您可能也应该查看警告。

但如果您已经收到错误 Unable to delete file,您将不会在生成的文件中看到错误。您需要重新启动 Android 工作室(如果它没有帮助,您需要删除 app\build)并尝试编译您的项目。之后你会在构建选项卡中发现生成的文件有错误。

希望对您有所帮助!

我尝试了上面的大部分解决方案,但似乎都没有用。 但这是我为启动项目所做的工作,并再次 运行。

我假设这是因为您正在使用数据绑定。 浏览到您的应用 gradle 文件

中的数据绑定部分

现在通过设置为 false 来禁用数据绑定。 接下来,重建您的项目,您会注意到一个关于处理 xml 文件中缺少 dataBinding 的错误。

接下来通过设置为 true 来启用 dataBinding。 接下来,重建您的项目。

应该已经清除了那个奇怪的错误。

请原谅我的奇怪解释,但我是 Whosebug 的新手。

在 Android Studio 终端中输入下面的命令。

gradlew --stop

这是因为数据绑定缓存问题。我们需要先禁用它来删除该缓存。我在更改 gradle.properties 文件的属性后解决了这个问题:

org.gradle.daemon=false
org.gradle.parallel=false
android.enableBuildCache=false
org.gradle.caching= false
android.databinding.enableV2=false

dataBinding {
        enabled = false
    }

清理并重建项目。重建后会显示错误。然后更改所有配置(使所有属性为真)并清理、重建。绝对没问题。

我也遇到了同样的问题,试了上面的方法。在项目目录中搜索时,在报错信息中找不到相关的class。

最后我怀疑可能是~/.gradle的问题,删除后再重新编译,终于解决了。

mv ~/.gradle ~/.gradle_bak