A failure occurred while executing com.android.build.gradle.internal.tasks

后端 未结 19 4251
臣服心动
臣服心动 2020-12-04 23:27

I am getting this error while I am building APK.

Cause 1: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while          


        
相关标签:
19条回答
  • 2020-12-05 00:15

    You may get an error like this when trying to build an app that uses a VectorDrawable for an Adaptive Icon. And your XML file contains "android:fillColor" with a <gradient> block:

    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>
    

    Gradient fill colors are commonly used in Adaptive Icons, such as in the tutorials here, here and here.

    Even though the layout preview works fine, when you build the app, you will see an error like this:

    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)
    

    The solution is to move the file icon_with_gradient.xml to drawable-v24/icon_with_gradient.xml or drawable-v26/icon_with_gradient.xml. It's because gradient fills are only supported in API 24 (Android 7) and above. More info here: VectorDrawable: Invalid drawable tag gradient

    0 讨论(0)
提交回复
热议问题