144 votes

Les références à d'autres ressources ne sont pas prises en charge par la génération de fichiers PNG au moment de la construction.

AndroidStudio 3.0 / Android Gradle plugin 3.0

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

Je reçois cette erreur:

les références à d'autres ressources ne sont pas prises en charge par la génération PNG au moment de la construction

Sera-t-il possible de le résoudre ou est-ce une solution obsolète?

353voto

mwa91 Points 2629

Dans votre application, build.gradle ajoutez la ligne suivante:

 defaultConfig{
   vectorDrawables.useSupportLibrary = true
}
 

Voir Développeurs Android: Solution de compatibilité descendante Vector Drawables pour plus de détails.

15voto

Oussema Aroua Points 3513

vous devez utiliser directement le code hexadécimal sans faire référence à une ressource.

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

10voto

Wonil Points 1499

Peu plus de contexte pour cette erreur:

  • Android 5.0 (API level 21) a été la première version officiellement à vecteurs de support un drawable.
  • Si vous utilisez minSdkVersion inférieur à 20, il y a deux solutions pour vecteur dessiné
    • Android Studio est Vecteur Actif de Studio générer PNG. Veuillez prendre un coup d'oeil Android Studio document. Mais, références à d'autres ressources ne sont pas pris en charge par l'accumulation de temps PNG génération.
    • Utiliser la bibliothèque de prise en charge
  • Ou, 21 ou au-dessus de minSdkVersion

Pour le soutien de la bibliothèque, ajouter un énoncé de votre construction.gradle fichier:

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

dependencies {
  compile 'com.android.support:appcompat-v7:23.2.0'
}

5voto

saigopi Points 2873

Ne pas utiliser l'attribut colorReference at fillColor dans le dessin vectoriel, il suffit d'utiliser du code hexa

utiliser comme ça

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

au lieu de cela

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

4voto

user40797 Points 352

Si votre minSdkVersion est 21, vous pouvez désactiver la génération de PNG en ajoutant cette ligne:

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

Le retrait de cette ligne générera toujours les PNG.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X