risposta-alla-domanda-sullo-sviluppo-web-bd.com

I riferimenti ad altre risorse non sono supportati dalla generazione di PNG build-time

AndroidStudio 3.0/Android Gradle plugin 3.0

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

Ottengo questo errore:

i riferimenti ad altre risorse non sono supportati dalla generazione di PNG in fase di compilazione

Sarà possibile risolverlo o si tratta di una soluzione deprecata?

101
langme

Nella tua app build.gradle aggiungi la seguente riga:

defaultConfig{
   vectorDrawables.useSupportLibrary = true
}

Vedi Sviluppatori Android: Soluzione di compatibilità con versioni precedenti di Vector Drawables per i dettagli.

211
mwa91

è necessario utilizzare il codice esadecimale direttamente non riferendosi a una risorsa.

<vector
  <path
    Android:fillColor="#FFF"/></vector>
9
Oussema Aroua

Un po 'più di contesto per questo errore:

  • Android 5.0 (livello API 21) è stata la prima versione a supportare ufficialmente i drawable vettoriali. 
  • Se si utilizza minSdkVersion inferiore a 20, ci sono due soluzioni per il vettore drawable
    • Vector Asset Studio di Android Studio genera PNG. Si prega di dare un'occhiata documento di Android Studio . Tuttavia, i riferimenti ad altre risorse non sono supportati dalla generazione di PNG in fase di compilazione.
    • Utilizzare la libreria di supporto
  • Oppure, usa 21 o sopra per minSdkVersion

Per la libreria di supporto, aggiungi una dichiarazione al tuo file build.gradle:

Android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

dependencies {
  compile 'com.Android.support:appcompat-v7:23.2.0'
}
7
Wonil

Se la tua minSdkVersion è 21 puoi disabilitare la generazione di PNG aggiungendo questa linea:

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

La rimozione di questa linea genererà comunque i PNG. 

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

4
user40797

Non usare colorReference all'attributo fillColor in Vector drawable usa il codice hex 

usare così 

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

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

2
saigopi

Sono stato in grado di aggirare questo facendo quanto segue:

  1. crea una cartella drawable-v21 e copia tutti i tuoi xmls disegnabili che usano le variabili lì
  2. nella cartella originale drawable cambia tutte le icone per usare un colore statico

In questo modo il compilatore funzionerà

0
joaomgcd

Per aggiungere fino a @ mwa91answer .

Nel caso in cui hai bisogno di un disegno dinamico di drawable, ma non hai tempo per aggiornare i tuoi layout e andare con @ mwa91answer e modificare tutti gli attributi Android:src="@drawable/..." su app:srcCompat="@drawable/...", puoi sempre usare il valore del colore esadecimale disegnabile e quindi tinta il 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
TheTechWolf

Penso che tu stia usando Android:fillColor="@color/image_button_disabled" questo codice per il vettore 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>

Non è supportato.

Sostituiscilo con Android:fillColor="#c4ca5e"

0