【问题标题】:A failure occurred while executing com.android.build.gradle.internal.tasks执行 com.android.build.gradle.internal.tasks 时发生故障
【发布时间】:2019-12-27 14:36:04
【问题描述】:

我在构建 APK 时遇到此错误。

Cause 1: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
    at org.gradle.workers.internal.DefaultWorkerExecutor$WorkerExecution.waitForCompletion(DefaultWorkerExecutor.java:285)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:115)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:87)
    at org.gradle.workers.internal.DefaultWorkerExecutor.await(DefaultWorkerExecutor.java:150)
    at com.android.build.gradle.internal.tasks.Workers$WorkerExecutorAdapter.await(Workers.kt:282)
    at com.android.ide.common.resources.MergeWriter.end(MergeWriter.java:48)
    at com.android.ide.common.resources.MergedResourceWriter.end(MergedResourceWriter.java:242)
    at com.android.ide.common.resources.DataMerger.mergeData(DataMerger.java:292)
    at com.android.ide.common.resources.ResourceMerger.mergeData(ResourceMerger.java:384)
    at com.android.build.gradle.tasks.MergeResources.lambda$doFullTaskAction$1(MergeResources.java:261)
    at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:58)

试图使缓存无效并重新启动 android studio.Rebuild 项目,但它们都不适合我。

【问题讨论】:

  • 是的。它还显示堆大小问题。但是我已经分配了 maximux 堆大小。
  • 用他的很多信息伙伴几乎不可能调试这个,我认为reddit/quora可能比堆栈更有帮助,你不会被允许在这里讨论
  • 感谢 Kushan。在 gradle.properties 中添加“org.gradle.jvmargs=-Xmx4608m”后找到了解决方案
  • here 或许能帮到你。这对我有用
  • 您好,我遇到了同样的问题。你是如何添加“org.gradle.jvmargs=-Xmx4608m”的?我在哪里可以找到 gradle.properties?

标签: android android-studio gradle


【解决方案1】:

终于找到了解决方案,将此行添加到 gradle.properties。

org.gradle.jvmargs=-Xmx4608m

【讨论】:

  • 我不知道这是做什么的,但它有效,你能补充一些信息吗?
  • org.gradle.jvmargs 表示将传递给构建时使用的 Java 虚拟机的参数。带有数字的 Xmx 选项(在这种非常特殊的语法中)通常用于设置堆的最大大小(以兆字节为单位),而 Xms 用于设置最小的。
  • 关于这个问题的更多指导,滚动到堆栈跟踪的底部,我的是Caused by: org.gradle.api.GradleException: Can't process attribute android:fillColor="@android:color/holo_red_dark": references to other resources are not supported by build-time PNG generation. File was preprocessed as vector drawable support was added in Android 5.0 (API level 21)
  • 我已经应用了您的解决方案,但仍然出现错误。 FAILURE:构建失败并出现异常。 * 出了什么问题:任务 ':app:mergeDebugJavaResource' 执行失败。 > 执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障 > 文件 'com.android.builder.files.ZipCentralDirectory@3a9a7373' 已删除,但在缓存中找不到以前的版本
【解决方案2】:

试试这个,in Android Studio

File > Invalidate Caches/Restart... 

【讨论】:

  • 我做了,但在构建项目后我仍然遇到类似的错误。
  • 另外,尝试清理项目,然后 File > Invalidate Caches/Restart... 并检查是否有效
  • 是的。感谢您的回复。问题在于 Android Gradle 构建工具的最新不稳定版本。我降级到最新的稳定版本,问题就消失了。
  • 你可以同步gradle
【解决方案3】:

我已经启用了 multidex,但版本太旧,所以升级并解决了问题:

// Old version
implementation "com.android.support:multidex:1.0.3"
// New version
def multidex_version = "2.0.1"
implementation "androidx.multidex:multidex:$multidex_version"

【讨论】:

  • 实现 'androidx.multidex:multidex:$multidex_version' 需要“...”而不是 '...'
  • 为我工作.. 谢谢:)
【解决方案4】:

我通过添加以下行消除了这个问题

在android>app>build.gradle 中添加multiDexEnabled true defaultConfig

在 android>app>build.gradle 里面添加 implementation 'com.android.support:multidex:1.0.3' 依赖

【讨论】:

  • 这对我有用。在 Android Studio 上北极狐
【解决方案5】:

就我而言,我启用了 multidex

打开[project_folder]/app/build.gradle 并添加以下行。

defaultConfig {
    ...

    multiDexEnabled true
}

dependencies {
    ...

    implementation 'com.android.support:multidex:2.0.1'
}

【讨论】:

    【解决方案6】:

    遇到了类似的问题...我的解决方法是更改​​/更新 gradle 版本

       classpath "com.android.tools.build:gradle:4.1.2" 
    

       classpath "com.android.tools.build:gradle:4.1.3"
    

    为我工作

    【讨论】:

    • 为我工作!谢谢!
    【解决方案7】:

    只有在构建到 Lollipop 或 Marshmallow 时,我才得到与您类似的堆栈跟踪,解决方案是禁用高级分析。

    在这里找到它:

    运行 -> 编辑配置 -> 分析 -> 启用高级分析

    https://stackoverflow.com/a/58029739/860488

    【讨论】:

    • 我不小心启用了高级分析并禁用它解决了问题。您的回答有助于我解决这个问题
    【解决方案8】:

    搜索您的代码,您必须在 xml drawable 中引用 color.xml 中的颜色。 去给十六进制代码而不是引用....

    示例: 在drawable.xml 中,你一定打过电话

    android:fillColor="@color/blue"
    

    把它改成android:fillColor="#ffaacc" 希望它能解决你的问题...

    【讨论】:

      【解决方案9】:

      gardle.proptes

      org.gradle.jvmargs=-Xmx1536M
      

      build.gardle

      defaultConfig {
              multiDexEnabled true
          }
      
      dependencies {
          implementation 'com.android.support:multidex:1.0.3'
      }
      

      然而这些东西并没有解决我的问题,直到我将 compileSdkVersion 从 27 增加到 28,它对我有用。

      android {
          compileSdkVersion 28
      
          sourceSets {
              main.java.srcDirs += 'src/main/kotlin'
          }
      
          lintOptions {
              disable 'InvalidPackage'
          }
      
          defaultConfig {
               minSdkVersion 21
              targetSdkVersion 28
              versionCode flutterVersionCode.toInteger()
              versionName flutterVersionName
              multiDexEnabled true
          }
      
          buildTypes {
              release {
                  crunchPngs false
              }
          }
      }
      

      【讨论】:

        【解决方案10】:

        在我的代码中,我使用的是最新版本的颤振和软件包 并通过在

        中添加该行来删除此错误
        multiDexEnabled true 
        

        在应用级 build.gradle 中

        【讨论】:

          【解决方案11】:

          classpath 'com.android.tools.build:gradle:3.3.2' 更改类路径,它将起作用。

          【讨论】:

            【解决方案12】:

            在android studio的右侧 单击 gradle -> 应用程序 -> 构建 -> 组装。 然后 android studio 将开始构建,并向您打印有关问题的正确消息。

            【讨论】:

              【解决方案13】:

              在 android studio 上工作:3.6.3 和 gradle 版本:

              classpath 'com.android.tools.build:gradle:3.6.3'
              classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72"
              

              中加入这一行

              gradle.properties 文件

              org.gradle.jvmargs=-Xmx512m
              

              【讨论】:

                【解决方案14】:

                解决方案:

                Caused by 4: com.android.builder.internal.aapt.AaptException: Dependent features configured but no package ID was set.
                

                所有功能模块都必须应用 library 插件,而不是 application 插件。

                build.gradle (:androidApp:feature_A)

                apply plugin: 'com.android.library'
                

                这一切都取决于每个人的堆栈跟踪。原因 1 WorkExecutionException 可能是其他原因的结果。所以我建议阅读从最后一个原因打印到第一个原因的完整堆栈跟踪。因此,如果我们解决了最后一个原因,我们很可能已经修复了从最后一个到第一个的原因链。

                我附上了我的堆栈跟踪示例,其中原始或具体问题是最后一个原因:

                Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction
                
                Caused by: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-4.2.0-alpha16-6840111-linux Daemon #0: Unexpected error during link, attempting to stop daemon.
                
                Caused by: java.io.IOException: Unable to make AAPT link command.
                
                Caused by 4: com.android.builder.internal.aapt.AaptException: Dependent features configured but no package ID was set.
                

                GL

                Feature Package ID was not set

                【讨论】:

                  【解决方案15】:

                  找到了解决办法。

                  将此代码添加到您的 build.gradle,

                  dependencies {
                      def multidex_version = "2.0.1"
                      implementation 'androidx.multidex:multidex:$multidex_version'
                  }
                  
                  then enable the multidex to true
                  
                   defaultConfig {
                          ...
                          minSdkVersion 15 
                          targetSdkVersion 28
                          multiDexEnabled true
                      }
                  
                  
                  

                  【讨论】:

                    【解决方案16】:

                    如果您已尝试上述所有解决方案,但仍无法解决您的问题。

                    这似乎无关紧要,但这是我的看法。

                    尝试从您的 Gradle 依赖项中删除它,因为这个障碍,我已经花了 2 个小时的时间。

                    implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"

                    【讨论】:

                      【解决方案17】:

                      我直接从GitHub下载代码文件时遇到了这个问题,但它显示了这个错误,但我的同事告诉我使用“Git bash here”并使用命令对其进行Gitclone。这样做之后就可以正常工作了。

                      【讨论】:

                        【解决方案18】:

                        以我的 Kotlin 为例 build.gradle:app 添加一行依赖: multiDexEnabled true 并添加 def multidex_version = "2.0.1" implementation 'androidx.multidex:multidex:$multidex_version'

                        【讨论】:

                          【解决方案19】:

                          我更新了这个并在 gradle wrapper 属性中为我工作

                          distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
                          

                          【讨论】:

                            【解决方案20】:

                            我也有同样的问题,你可以添加这个

                            org.gradle.jvmargs=-Xmx4608m 在您的 Gradle.properties

                            但就我而言,我是这样改变的:

                            来自: org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8

                            到: org.gradle.jvmargs=-Xmx4608m -Dfile.encoding=UTF-8

                            【讨论】:

                              【解决方案21】:

                              在尝试构建使用 VectorDrawable 作为自适应图标的应用时,您可能会收到类似的错误。您的 XML 文件包含 "android:fillColor"<gradient> 块:

                              res/drawable/icon_with_gradient.xml

                              <?xml version="1.0" encoding="utf-8"?>
                              <vector xmlns:android="http://schemas.android.com/apk/res/android"
                                  xmlns:aapt="http://schemas.android.com/aapt"
                                  android:width="96dp"
                                  android:height="96dp"
                                  android:viewportHeight="100"
                                  android:viewportWidth="100">
                              
                                  <path
                                      android:pathData="M1,1 H99 V99 H1Z"
                                      android:strokeColor="?android:attr/colorAccent"
                                      android:strokeWidth="2">
                                      <aapt:attr name="android:fillColor">
                                          <gradient
                                              android:endColor="#156a12"
                                              android:endX="50"
                                              android:endY="99"
                                              android:startColor="#1e9618"
                                              android:startX="50"
                                              android:startY="1"
                                              android:type="linear" />
                                      </aapt:attr>
                                  </path>
                              </vector>
                              

                              自适应图标中常用渐变填充颜色,如教程hereherehere

                              即使布局预览工作正常,但在构建应用程序时,您会看到如下错误:

                              FAILURE: Build failed with an exception.
                              
                              * What went wrong:
                              Execution failed for task ':app:mergeDebugResources'.
                              > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
                                 > Error while processing Project/app/src/main/res/drawable/icon_with_gradient.xml : null
                              
                              (More info shown when the gradle build is run with --stack-trace flag):
                              
                              Caused by: java.lang.NullPointerException
                                  at com.android.ide.common.vectordrawable.VdPath.addGradientIfExists(VdPath.java:614)
                                  at com.android.ide.common.vectordrawable.VdTree.parseTree(VdTree.java:149)
                                  at com.android.ide.common.vectordrawable.VdTree.parse(VdTree.java:129)
                                  at com.android.ide.common.vectordrawable.VdParser.parse(VdParser.java:39)
                                  at com.android.ide.common.vectordrawable.VdPreview.getPreviewFromVectorXml(VdPreview.java:197)
                                  at com.android.builder.png.VectorDrawableRenderer.generateFile(VectorDrawableRenderer.java:224)
                                  at com.android.build.gradle.tasks.MergeResources$MergeResourcesVectorDrawableRenderer.generateFile(MergeResources.java:413)
                                  at com.android.ide.common.resources.MergedResourceWriter$FileGenerationWorkAction.run(MergedResourceWriter.java:409)
                              

                              解决方法是将文件icon_with_gradient.xml移动到drawable-v24/icon_with_gradient.xmldrawable-v26/icon_with_gradient.xml。这是因为渐变填充仅在 API 24 (Android 7) 及更高版本中受支持。更多信息在这里:VectorDrawable: Invalid drawable tag gradient

                              【讨论】:

                                【解决方案22】:

                                我知道这可能不是一个完整或精确的解决方案,但是对于那些即使在执行了此线程中给出的操作后仍然面临问题的人,请检查 value 文件夹中的文件。对我来说,有一个错字和一些缺失值。一旦我修复了它们,这个错误就停止了。

                                【讨论】:

                                  【解决方案23】:

                                  如果您收到此错误提示 signing-config.json (Access denied) 意味着只需退出 android studio 并转到桌面主页并单击 android studio 图标 并给 Run as Administrator,这样就可以解决问题(或) 你可以删除 signing-config.json 并重新-运行程序:)

                                  【讨论】:

                                    【解决方案24】:

                                    几分钟前,当我尝试在 C/(.something../.something../.something../.something....) 目录中运行颤振项目时,我也遇到了同样的问题,

                                    所以我在我的 E 目录中创建了一个新文件夹并在那里启动了一个新项目,当我运行它时......令人惊讶的是它起作用了。不知道为什么?

                                    这是我在E:目录运行后得到的消息

                                    Launching lib\main.dart on Lenovo K33a42 in debug mode...
                                    Running Gradle task 'assembleDebug'...
                                    Checking the license for package Android SDK Platform 28 in 
                                    C:\Users\Shankar\AppData\Local\Android\sdk\licenses
                                    License for package Android SDK Platform 28 accepted.
                                    Preparing "Install Android SDK Platform 28 (revision: 6)".
                                    "Install Android SDK Platform 28 (revision: 6)" ready.
                                    Installing Android SDK Platform 28 in 
                                    C:\Users\Shankar\AppData\Local\Android\sdk\platforms\android-28
                                    "Install Android SDK Platform 28 (revision: 6)" complete.
                                    "Install Android SDK Platform 28 (revision: 6)" finished.
                                    Parameter format not correct -
                                    √ Built build\app\outputs\apk\debug\app-debug.apk.
                                    Installing build\app\outputs\apk\app.apk...
                                    Debug service listening on ws://127.0.0.1:51105/5xCsT5vV62M=/ws
                                    Syncing files to device Lenovo K33a42...
                                    

                                    【讨论】:

                                      【解决方案25】:

                                      如果有人在添加 Firebase 存储后遇到此问题。做flutter clean并重新运行它,它会工作

                                      【讨论】:

                                        【解决方案26】:

                                        在我的情况下,由于 gradle 包装器中的 gradle 版本从 6.2 all 升级到 6.6 all 而出现问题。所以我清除了 avd 的数据并重新启动它,然后删除了 android/.gradle 中的 .gradle 文件夹,然后运行 ​​yarn start --reset-cacheyarn android。然后它对我有用

                                        【讨论】:

                                          【解决方案27】:

                                          在我的情况下,问题与视图绑定有关。由于xml 布局文件无效,它无法生成绑定类。在文件中,我有一个Switch,ID 为switch,这是一个Java 关键字。重命名Switch id 解决了这个问题。

                                          【讨论】:

                                            【解决方案28】:

                                            清理项目 -> 使缓存无效/重新启动。我的问题就这样解决了。

                                            【讨论】:

                                            • 问题表明这已被尝试过,但不是解决方案。
                                            【解决方案29】:

                                            就我而言,我使用的是本机反应,它发生在 gradle 更新到新版本时。我知道这与 gradlew 有关。我检查了几天前在 github 上推送的 repo。我更改了 android/build.gradle 依赖项中的 gradle 类路径并添加了

                                            classpath("com.android.tools.build:gradle:3.5.3")
                                            classpath 'com.google.gms:google-services:4.3.3'
                                            

                                            它解决了我的问题。

                                            【讨论】:

                                              【解决方案30】:

                                              在我的例子中,我只有 2 个模块以相同的方式命名,但路径不同:

                                              来自 ./settings.gradle

                                              include ':presentation'
                                              include ':third_parties/presentation'
                                              

                                              我刚刚重命名了两个模块之一并更新了 ./settings.gradle 并解决了这个问题:

                                              include ':presentation'
                                              include ':third_parties/ui-implementation'
                                              

                                              希望这可能对某人有所帮助?

                                              【讨论】:

                                                猜你喜欢
                                                • 2020-09-19
                                                • 1970-01-01
                                                • 2022-08-21
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 2022-08-03
                                                • 2022-12-19
                                                • 2021-07-29
                                                相关资源
                                                最近更新 更多