无法捕获任务的输出文件的快照

时间:2017-03-28 09:10:17

标签: android

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

  

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

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

14 个答案:

答案 0 :(得分:13)

Screenshot

禁用您的防病毒软件,它可以正常运行。

答案 1 :(得分:8)

这是Gradle问题,您可以找到它here。 所以现在只需禁用Instant Run。 它对我有用。

答案 2 :(得分:4)

在android studio中,

  1. 打开“设置”或“首选项”对话框:在Windows或Linux上,从菜单栏中选择File > Settings。在Mac OSX上,从菜单栏中选择Android Studio > Preferences
  2. 导航到Build, Execution, Deployment > Instant Run
  3. 取消选中代码更改后重新启动活动旁边的框。

答案 3 :(得分:3)

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

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

答案 4 :(得分:1)

在build.gradle文件的buildType版本类中设置multiDexEnabled为true

答案 5 :(得分:1)

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

答案 6 :(得分:1)

遵循以下步骤:即时运行(文件 - >设置 - &gt;构建,执行,部署 - >取消选中即时运行),然后将其编译正常。

答案 7 :(得分:0)

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

答案 8 :(得分:0)

错误:无法捕获任务&gt; transformClassesWithDexForDebug&#39;的输出文件的快照。 property&#39; streamOutputFolder&#39;在最新检查期间::

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

<强> 1。点击Build - &gt;重建项目

<强> 2。点击工具 - &gt; Android - &gt;使用Gradle文件同步项目

答案 9 :(得分:0)

对我来说,当我将设备用作仿真器时出现此错误。我确实喜欢它,而且效果很好:

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

答案 10 :(得分:0)

我遇到了同样的问题,并且通过禁用QuickHeal Antivirus的病毒保护功能,对我来说很好用。

答案 11 :(得分:0)

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

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

答案 12 :(得分:0)

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

如果您具有防病毒功能,则可能会看到此信息。卸载可能会解决问题,但随后您没有防病毒软件(最好在防病毒软件中设置一些功能以定期扫描文件)。

就我而言,仅当我有一个Jenkinsfile管道时才出现此问题,在该管道中我正在parallel中为3-5个项目运行Gradle任务(假设Gradle正在运行{{1 }}任务或rpm任务)以及我正在运行此管道的并发运行时。

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

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

单独并行运行它们-或-更现实的情况是运行此管线作业的多个管线运行(并行运行5项目的gradle任务)可能会落入此 LOCK 文件条件

您可以通过设置唯一的parallel来解决此问题 (即使用动态创建且唯一的Jenkins作业的工作空间),甚至可以通过将Gradle用户的主页设置为以下方式来更好地实现:

GRADLE_USER_HOME="~${WORKSPACE}/.cache"

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

当我尝试只运行一个管道运行(在Paralle中运行所有5个项目的gradle任务)时,管道一直在成功。

运行管道作业的多个实例(每次运行中运行5个并行构建)会陷入此文件LOCK问题。

当我运行多个并发管道运行时(每个管道运行-在5个不同项目上并行运行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进行过程中,因为其他进程正在使用目标文件夹/文件)

lazy

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

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

有关更多详细信息,请参见此处:Jenkins - java.lang.IllegalArgumentException: Last unit does not have enough valid bits & Gradle error: Task 'null' not found in root project

答案 13 :(得分:0)

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

执行以下操作可以为我解决

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

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

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

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