android resources android-studio-3.0

android - La generación de PNG en tiempo de compilación no admite referencias a otros recursos



resources android-studio-3.0 (8)

AndroidStudio 3.0 / Android Gradle plugin 3.0

<vector> <path android:fillColor="@color/image_button_disabled"/> </vector>

Me sale este error:

las referencias a otros recursos no son compatibles con la generación PNG en tiempo de construcción

¿Será posible resolverlo o es una solución obsoleta?


Creo que está utilizando android:fillColor="@color/image_button_disabled" este código para el android:fillColor="@color/image_button_disabled" vectorial.

// 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>

No es compatible.

Simplemente reemplácelo con android:fillColor="#c4ca5e"



He podido solucionar esto haciendo lo siguiente:

  1. cree una carpeta drawable-v21 y copie todos sus xmls dibujables que usen variables allí
  2. en la carpeta dibujable original, cambie todos los iconos para usar un color estático

De esta manera el compilador funcionará


No use colorReference en el atributo fillColor en Vector dibujable, solo use código hexa

usar así

<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="#1abc9c" android:pathData="M9,11L7,11v2h2v-2zM13,11h-2v2h2v-2zM17,11h-2v2h2v-2zM19,4h-1L18,2h-2v2L8,4L8,2L6,2v2L5,4c-1.11,0 -1.99,0.9 -1.99,2L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,20L5,20L5,9h14v11z"/>

en lugar de esto

<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="@color/colorPrimary" android:pathData="M9,11L7,11v2h2v-2zM13,11h-2v2h2v-2zM17,11h-2v2h2v-2zM19,4h-1L18,2h-2v2L8,4L8,2L6,2v2L5,4c-1.11,0 -1.99,0.9 -1.99,2L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,20L5,20L5,9h14v11z"/>


Para agregar a answer .

En caso de que necesite temas dinámicos de drawable, pero no tiene tiempo para actualizar sus diseños e ir con answer y cambiar todos los atributos android:src="@drawable/..." a app:srcCompat="@drawable/..." , siempre puede usar el valor de color hexadecimal en dibujable y luego teñir el dibujable en ImageView:

<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/your_drawable" android:tint="@color/image_button_disabled" />



Un poco más de contexto para este error:

  • Android 5.0 (API nivel 21) fue la primera versión que admitió oficialmente los dibujos vectoriales.
  • Si usa minSdkVersion inferior a 20, hay dos soluciones para el dibujo vectorial.
    • El Vector Asset Studio de Android Studio genera PNG. Por favor, eche un vistazo al documento de Android Studio . Pero las referencias a otros recursos no son compatibles con la generación de PNG en tiempo de construcción.
    • Usar biblioteca de soporte
  • O use 21 o superior para minSdkVersion

Para la biblioteca de soporte, agregue una declaración a su archivo build.gradle:

android { defaultConfig { vectorDrawables.useSupportLibrary = true } } dependencies { compile ''com.android.support:appcompat-v7:23.2.0'' }


necesita usar el código hexadecimal directamente sin referirse a un recurso.

<vector <path android:fillColor="#FFF"/></vector>