it-swarm.com.de

Verweise auf andere Ressourcen werden von der PNG-Generierung während der Erstellung nicht unterstützt

AndroidStudio 3.0/Android Gradle Plugin 3.0

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

Ich erhalte diesen Fehler:

verweise auf andere Ressourcen werden von der PNG-Generierung während der Erstellung nicht unterstützt

Kann es gelöst werden oder handelt es sich um eine veraltete Lösung?

101
langme

Fügen Sie in Ihrer App build.gradle die folgende Zeile hinzu:

defaultConfig{
   vectorDrawables.useSupportLibrary = true
}

Weitere Informationen finden Sie unter Android-Entwickler: Vector Drawables Backward Compatibility Solution .

211
mwa91

sie müssen den Hex-Code verwenden, der nicht direkt auf eine Ressource verweist.

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

Etwas mehr Kontext für diesen Fehler:

  • Android 5.0 (API Level 21) war die erste Version, die Vektor-Drawables offiziell unterstützt. 
  • Wenn Sie minSdkVersion unter 20 verwenden, gibt es zwei Lösungen für vektoriell zeichnbar
    • Vector Asset Studio von Android Studio generiert PNG. Bitte werfen Sie einen Blick auf Android Studio-Dokument . Verweise auf andere Ressourcen werden jedoch von der PNG-Generierung während der Erstellung nicht unterstützt.
    • Unterstützungsbibliothek verwenden
  • Oder verwenden Sie 21 oder höher für minSdkVersion

Fügen Sie für die Unterstützungsbibliothek eine Anweisung zu Ihrer build.gradle-Datei hinzu:

Android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

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

Wenn Ihre minSdkVersion 21 ist, können Sie die Erzeugung von PNG deaktivieren, indem Sie folgende Zeile hinzufügen:

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

Durch das Entfernen dieser Zeile werden weiterhin die PNGs generiert. 

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

4
user40797

Verwenden Sie das colorReference at fillColor-Attribut in Vector drawable nicht, sondern verwenden Sie nur Hexa-Code 

verwenden Sie so 

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

an Stelle von

<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

Ich konnte dieses Problem umgehen, indem ich Folgendes tat:

  1. erstellen Sie einen drawable-v21-Ordner, und kopieren Sie alle zeichnenden XML-Dateien, die dort Variablen verwenden
  2. Ändern Sie im ursprünglichen Zeichenordner alle Symbole, um eine statische Farbe zu verwenden

Auf diese Weise funktioniert der Compiler

0
joaomgcd

Zu @ mwa91 addierenAntwort .

Falls Sie ein dynamisches Zeichnen benötigen, aber keine Zeit haben, Ihre Layouts zu aktualisieren und mit @ mwa91answer zu gehen und alle Android:src="@drawable/..."-Attribute in app:srcCompat="@drawable/..." zu ändern, können Sie immer den Hex-Farbwert verwenden Zeichnen und dann später das Zeichnen in ImageView einfärben:

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

Ich denke, Sie verwenden Android:fillColor="@color/image_button_disabled" diesen Code für Vektorzeichnungen.

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

Es wird nicht unterstützt.

Ersetzen Sie es einfach durch Android:fillColor="#c4ca5e"

0