执行com.android.build.gradle.internal.tasks时发生故障


84

构建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项目,但它们都不适合我。


1
发布故障堆栈跟踪信息
Kushan

只有这么多吗?
库山

1
是。它还显示了堆大小问题。但是我已经分配了maximux堆大小。
apurv thakkar

仅凭他的大量信息伙伴几乎不可能调试它,我认为reddit / quora可能比堆栈更有用,您将无法在这里进行讨论
Kushan

3
谢谢Kushan。我在gradle.properties中添加了“ org.gradle.jvmargs = -Xmx4608m”之后,我找到了一个解决方案
apurv thakkar,

Answers:


155

最后,通过将这一行添加到gradle.properties中找到了解决方案。

org.gradle.jvmargs = -Xmx4608m


你能给你的栈跟踪吗?
apurv thakkar


6
我不知道这是做什么的,但是它起作用了,您可以添加一些信息吗?
Sven van den Boogaart,

5
org.gradle.jvmargs表示将在构建期间传递给使用的Java虚拟机的参数。带数字的Xmx选项(使用这种非常特殊的语法)通常用于设置堆的最大大小(以兆字节为单位),而Xms用于设置最小的堆大小。
PoutchiPatch

4
有关此问题的更多指导,请滚动到堆栈跟踪的底部,我的是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)
sea

17

尝试这个, in Android Studio

File > Invalidate Caches/Restart... 

2
我做到了,但是在构建项目后仍然出现类似的错误。
赫森

另外,尝试清理项目,然后选择“文件”>“使缓存无效/重新启动...”,然后检查是否
可行

Yaday。感谢您的回复。问题是Android Gradle构建工具的最新不稳定版本。我降级到最新的稳定版本,问题解决了。
赫桑

您可以同步gradle
oguzhan '20

9

我已经启用了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'


5

我通过添加以下行来消除此问题

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

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


4

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

例子:drawable.xml你一定已经打电话

android:fillColor="@color/blue"

改变它,android:fillColor="#ffaacc" 希望它能解决您的问题...



2

在android studio的右侧,单击gradle-> app-> build-> assemble。然后android studio将开始构建,并向您显示该问题的正确消息。


1

在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

1

添加Firebase存储后,如果有人对此问题扑朔迷离。拍打干净然后重新运行,它将起作用


0

找到了解决方案。

将此代码添加到您的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
    }



0

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

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

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

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


0

尝试构建将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>

渐变填充颜色通常用于“自适应图标”中,例如此处此处此处的教程。

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

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:无效的可绘制标签渐变


0

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


0

如果您收到此错误消息,说signing-config.json (拒绝访问)意味着只需要退出android studio并转到桌面首页,然后单击android studio图标并以Run as Administrato r身份运行,就可以解决问题(或),您可以删除signing-config.json并重新运行程序:)


0

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

因此,我在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...

0

当我直接从GitHub下载代码文件时遇到了这个问题,但它显示了此错误,但是我的同事告诉我使用“ Git bash here ”并使用命令对其进行Gitclone。这样做之后,效果很好。


0

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


0

解决方案:

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'

这一切都取决于每个堆栈的堆栈跟踪。原因1WorkExecutionException可能是其他原因导致的。因此,我建议从打印的最后一个原因到第一个原因阅读完整的堆栈跟踪。因此,如果我们解决了最后一个原因,那么很有可能我们会固定从最后到第一个原因的链。

我附上我的stacktrace的示例,其中原始或具体问题是最后原因:

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

未设置功能包ID

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.