升级到 Android Studio 3.4 后与 resources_ap 相关的错误

Error related to resources_ap after upgrading to Android Studio 3.4

我今天升级了 Android Studio 3.4。我无法再 运行 该应用程序。我清理了项目,多次重启 Android studio。我也使缓存无效但无济于事。 安装应用程序时出现以下错误:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformDexWithInstantRunSlicesApkForDebug'.
> java.lang.RuntimeException: java.io.FileNotFoundException: E:\...\app\build\intermediates\instant_run_split_apk_resources\debug\instantRunSplitApkResourcesDebug\out\slice_1\resources_ap

任何人都可以提供有关如何解决此问题的提示吗?

编辑: 我有两个项目具有与此问题相关的不同行为:

  1. 项目 A 最初有这个问题。我根据答案禁用了 Instant 运行,问题已解决。我稍后启用了 Instant 运行,项目 A 仍然运行良好。
  2. 项目 B 也有这个问题,已通过关闭 Instant 运行 得到解决。但是,一旦打开 Instant 运行,它就会出现问题。我不知道这两个项目之间有什么区别。一个嫌疑人是库 C 项目。库 C 是项目 A 的一部分(即它的源代码、资源在项目 A 中)。但是项目B使用库C的aar作为模块。

作为解决方法(File/Settings/Instant 运行)关闭 Instant 运行 似乎可以解决问题。

根据 OP 的说法,可以重新打开 Instant 运行 而不会在某些项目中再次出现该问题。

问题 应该 在 Android Studio 3.4.2 中修复。


编辑: 这是我关于如何在 Android Studio 3.4.0 和 3.4.1 中修复它的旧答案:

使用 Gradle 5.4 而不是 5.1.1 帮助我解决了这个错误。

更新 gradle-wrapper.properties 文件: distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-all.zip

请注意,我还没有测试过旧的 Gradle 版本,因此甚至(例如)5.2 版本也可能工作。您可以在此处查看所有 Gradle 版本 - https://gradle.org/releases/

我尝试了 "Gradle 5.4" 和 "Switching off Instant Run" 解决方案,但直到我打开 "Wait for Debugger" 选项后它们才起作用,直到 "Developer Options" 在我的 phone 中(Huawei Mate 10).我已经确认这也只适用于 "Instant Run" 关闭。

这是由 android studio 3.4 中的 "instant run" 功能引起的,您可以通过以下方式禁用它:

打开“设置”或“首选项”对话框。导航到构建、执行、部署 > 即时 运行。取消选中启用即时 运行

旁边的框

享受...!

转到您的项目文件夹并将所有内容从...\app\build\ 移动到项目外的某个其他文件夹。 (清除构建文件夹 并进行备份) 在我的例子中,清除构建文件夹解决了问题,直到那时我为每个新安装禁用即时 运行 选项。

这个问题发生在我身上Windows。我通过禁用即时 运行 解决了它。 我在 Linux 上也有相同的 Android Studio 版本,它在即时 运行 启用时工作正常。

这已在 3.4.2 中修复。只需更新到最新版本的 Studio。 https://androidstudio.googleblog.com/2019/07/android-studio-342-available.html

当我更新到 Android Studio 3.4.2 时发生了同样的错误,我将 tools-build-gradle 更新到 3.4.2 并且问题消失了。

作为解决方法(File/Settings/Instant 运行)关闭 Instant 运行 似乎可以解决问题。

无需关闭 Instant 运行。
只需删除项目中的 '.gradle' 目录和 'app' 模块中的构建目录。
执行清理项目和重建项目。
这将解决问题。