【问题标题】:Failed to capture snapshot of output files for task未能捕获任务的输出文件的快照
【发布时间】:2017-08-21 06:39:20
【问题描述】:

错误:在最新检查期间无法捕获任务“transformClassesWithDexForDebug”属性“streamOutputFolder”的输出文件快照。

无法为文件“C:\Users\GauravZone\AndroidStudioProjects\ZopporoStore\app\build\intermediates\transforms\dex\debug\folders\1000\10000\instant-run_83dbc65f4e3a4cd278807c089695c6b352698791\classes.dex”创建 MD5 哈希。

我收到这些错误,不知道为什么,所有应用程序早些时候都运行良好,但在尝试运行项目时突然在我的所有应用程序中出现此错误

【问题讨论】:

  • 请添加您的代码,以帮助我们了解如何为您提供帮助。
  • 我在所有应用程序中都收到此错误,以前所有应用程序都运行良好,但现在我收到这些错误,这与代码无关,可能是它的 gradle 问题
  • 卸载你的杀毒软件...
  • 如果您使用的是 react-native:我通过以管理员身份运行命令行并运行 'react-native run-android' 解决了这个问题
  • 重启安卓工作室即可。它对我有用。

标签: android


【解决方案1】:

禁用您的防病毒软件,它会起作用。

【讨论】:

  • 这应该是公认的答案。我在使用 QuickHeal 防病毒程序时遇到了同样的问题。
【解决方案2】:

这是一个 Gradle 问题,您可以在 here 找到它。 因此,到目前为止,只需禁用 Instant Run。 它对我有用。

【讨论】:

    【解决方案3】:

    在安卓工作室中,

    1. 打开“设置”或“首选项”对话框:在 Windows 或 Linux 上,从菜单栏中选择 File > Settings。在 Mac OSX 上,从菜单栏中选择 Android Studio > Preferences
    2. 导航到Build, Execution, Deployment > Instant Run
    3. 取消选中 Restart activity on code changes 旁边的复选框。

    【讨论】:

      【解决方案4】:

      我在我的 react-native 项目中通过删除所有 npm 缓存解决了这个问题

      1.npm  cache clean --force
      2.react-native run-android
      

      【讨论】:

        【解决方案5】:

        在 build.gradle 文件的 buildType 发布类中设置 multiDexEnabled true

        【讨论】:

        • 如何设置?
        • 嗨 @Hemil Kumbhani 我将 multiDexEnabled 设置为 true,但它没有工作同样的错误
        • 尝试在 build.gradle 文件中添加这些依赖项 { compile 'com.android.support:multidex:1.0.0' }
        【解决方案6】:

        我也遇到了同样的错误。 但是当我禁用 Instant Run 时,Gradle 开始构建。 但我同意那些认为这是 Gradle 问题的人的观点。 在问题解决之前,请禁用 Instant Run。

        【讨论】:

          【解决方案7】:

          错误:在最新检查期间无法捕获任务“transformClassesWithDexForDebug”属性“streamOutputFolder”的输出文件快照::

          解决方案:只需重建项目,然后将项目与 Gradle 文件同步,如下所述。

          1.点击构建 -> 重建项目

          2。点击工具 -> Android -> 将项目与 Gradle 文件同步

          【讨论】:

            【解决方案8】:

            按照步骤:instant run(file->setting->build,execution,deployment->uncheck instant run) 然后编译就可以正常运行了。

            【讨论】:

              【解决方案9】:

              在将 Android Plugin for Gradle 更新到版本 2.3.1 后,我遇到了这个问题。回滚到 2.3.0 版本对我有帮助,尝试设置 classpath 'com.android.tools.build:gradle:2.3.0' 在您的顶级 gradle.build 文件中。

              【讨论】:

                【解决方案10】:

                对我来说,当我将设备用作模拟器时出现此错误。我确实喜欢它并且它有效:

                       1.adb reverse tcp:8081 tcp:8081
                       2.react-native start --reset-cache
                       3.react-native run-android
                

                【讨论】:

                  【解决方案11】:

                  我遇到了同样的问题,通过禁用 QuickHeal Antivirus 的病毒防护,它对我来说很好。

                  【讨论】:

                    【解决方案12】:

                    问题是 gradle 版本。将 gradle 版本更新到最新以解决此类问题。

                    我已经尝试过 'com.android.tools.build:gradle:3.3.2' 对我有用。以前是 '3.1.0'

                    【讨论】:

                      【解决方案13】:

                      当有多个进程对磁盘中的文件执行某些操作时(无论是 Jenkins 作业的工作区、Gradle 的缓存路径还是它创建的 Gradle build 文件夹),就会出现此问题这些进程正在尝试对文件执行某些操作并持有锁。

                      如果您有防病毒软件,您可能会看到这个。卸载可能会解决问题,但是你没有杀毒(如果你可以在杀毒中设置一些东西来定期扫描文件会更好)。

                      在我的情况下,这个问题仅在我有一个 Jenkinsfile 管道时出现,我在 parallel 中为 3-5 个项目运行 Gradle 任务(假设 Gradle 正在运行 rpm 任务或 @987654326 @task) 以及当我运行此管道的并发运行时。

                      如您所见,我的管道代码 (Jenkinsfile Pipeline DSL: How to Show Multi-Columns in Jobs dashboard GUI - For all Dynamically created stages - When within PIPELINE section) 正在创建动态阶段,当我在 pipeline 部分中调用它时,我使用 parallel 运行 N 号。项目(我可以在哈希/数组中定义)并行 gradle 任务。

                      我注意到的是,所有这些运行(并行运行)都使用我的用户 ID(或某些服务帐户)运行,并且它们都使用相同的 Gradle 版本(4.3.1 在我的case),因此它们使用相同的缓存。

                      单独并行运行它们——或者——更现实的情况是运行这个管道作业的多个管道运行(并行运行 5 个项目的 gradle 任务)可能会进入这个 LOCK 文件条件.

                      您可以通过设置唯一的GRADLE_USER_HOME="~${WORKSPACE}/.cache" 来解决这个问题 (即使用动态创建且唯一的 Jenkins 作业的工作区)甚至更好地将 Gradle 用户主页设置为:

                      dt_stamp=`date +%s`; ## set and pass this dt_stamp variable for Gradle user home before calling Gradle.
                      GRADLE_USER_HOME="~${WORKSPACE}/${dt}/.cache"`
                      

                      这样,至少在 Gradle 的缓存中,您不会看到任何由于锁定文件而导致的问题(注意:您将无法有效地使用 Gradle 的缓存概念 lazy (或者每次都从像 Artifactory 这样的二进制存储库中获取工件/库依赖项)如果您将 GRADLE_USER_HOME 设置为动态文件夹值,则在许多项目中使用 Gradle 时就像每次清除缓存后运行 gradle 一样(对于某些人来说,它是好的,如果您的构建不需要太多时间并且构建方式也更清洁))。

                      当我尝试只运行一个管道运行(并行运行所有 5 个项目的 gradle 任务)时,管道始终成功。

                      运行管道作业的多个实例(每次运行运行 5 个并行构建)会导致此文件锁定问题。

                      当我运行许多并发管道运行时出现错误消息(每个管道运行 - 在 5 个不同的项目上并行运行 Gradle 任务)。

                      FAILURE: Build failed with an exception.
                      
                      
                      * What went wrong:
                      
                      Failed to capture snapshot of output files for task ':rpm' property 'archivePath' during up-to-date check.
                      
                      > Timeout waiting to lock file hash cache (/view/user123456_Team_Tools/vobs/space/test/folder1/Project1of5/.gradle/4.3.1/fileHashes). It is currently in use by another Gradle instance.
                      
                        Owner PID: 29003
                      
                        Our PID: 903
                      
                        Owner Operation: 
                      
                        Our operation: 
                      
                        Lock file: /view/user123456_Team_Tools/vobs/space/test/folder1/Project1of5/.gradle/4.3.1/fileHashes/fileHashes.lock
                      
                      
                      * Try:
                      
                      Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
                      

                      -- 或--

                      如果进程无法删除目录,您也可能会遇到这种错误(Gradle 正在进行中,因为目标文件夹/文件可能正在被其他进程使用)

                      FAILURE: Build failed with an exception.
                      
                      
                      * What went wrong:
                      
                      Execution failed for task ':clean'.
                      
                      > Unable to delete directory: /view/user123456_Team_Tools/vobs/space/test/folder1/project2of5/build/classes/java/main/org/syntax/jedit
                      
                      
                      * Try:
                      
                      Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
                      
                      
                      * Get more help at https://help.gradle.org
                      

                      如果你真的幸运(像我一样),那么你可能也会遇到这个错误:

                      Jenkins - java.lang.IllegalArgumentException:最后一个单元没有足够的有效位 &
                      Gradle 错误:在根项目中找不到任务“null”

                      更多详情请看这里:Jenkins - java.lang.IllegalArgumentException: Last unit does not have enough valid bits & Gradle error: Task 'null' not found in root project

                      【讨论】:

                        【解决方案14】:

                        清除缓存确实可以解决问题。但是只有一次,如果你停止项目并重新运行它,你会再次遇到同样的错误。

                        为我做以下修复它,

                        cd android ./gradlew clean react-native start --reset-cache npm clean cache --force

                        接下来,打开两个不同的终端,

                        运行react-native start 在一个终端和第二个终端中,

                        运行react-native run-android 希望它也对你有用。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2019-05-21
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多