References to other resources are not supported by build-time PNG generation

前端 未结 8 1994
陌清茗
陌清茗 2020-12-12 11:25

AndroidStudio 3.0 / Android Gradle plugin 3.0


  

相关标签:
8条回答
  • 2020-12-12 12:02

    I've been able to work around this by doing the following:

    1. create a drawable-v21 folder and copy all your drawable xmls that use variables there
    2. in the original drawable folder change all the icons to use a static color

    This way the compiler will work

    0 讨论(0)
  • 2020-12-12 12:02

    I think you are using android:fillColor="@color/image_button_disabled" this code for vector drawable.

    // image_button_disabled.xml
    
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:color="@color/circular_image_color_pressed" android:state_pressed="true" />
        <item android:color="@color/circular_image_color_normal" />
    </selector>
    

    It's not supported.

    Just replace it with android:fillColor="#c4ca5e"

    0 讨论(0)
  • 2020-12-12 12:02

    To add up to @mwa91 answer.

    In case you need dynamic theming of drawable, but you don't have time to update your layouts and go with @mwa91 answer and change all android:src="@drawable/..." attributes to app:srcCompat="@drawable/...", you can always use hex color value in drawable and then later tint the drawable in ImageView:

    <ImageView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:src="@drawable/your_drawable"
          android:tint="@color/image_button_disabled"
          />
    
    0 讨论(0)
  • 2020-12-12 12:07

    you need to use the hex code directly not referring to a resource.

    <vector
      <path
        android:fillColor="#FFF"/></vector>
    
    0 讨论(0)
  • 2020-12-12 12:11

    Little bit more context for this error:

    • Android 5.0 (API level 21) was the first version to officially support vector drawables.
    • If you use minSdkVersion lower than 20, there are two solutions for vector drawable
      • Android Studio's Vector Asset Studio generate PNG. Please take a look Android Studio document. But, references to other resources are not supported by build-time PNG generation.
      • Use support library
    • Or, use 21 or above for minSdkVersion

    For support library, add a statement to your build.gradle file:

    android {
      defaultConfig {
        vectorDrawables.useSupportLibrary = true
      }
    }
    
    dependencies {
      compile 'com.android.support:appcompat-v7:23.2.0'
    }
    
    0 讨论(0)
  • 2020-12-12 12:13

    If your minSdkVersion is 21 you can disable the generation of PNG by adding this line:

    // set to an empty list to disable the feature
    vectorDrawables.generatedDensities = [] 
    

    Removing this line will still generate the PNGs.

    Source: http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html

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