Mettre à jour la bibliothèque de support Android vers 23.2.0 provoque une erreur: XmlPullParserException Ligne de fichier XML binaire # 17 La balise <vector> nécessite viewportWidth> 0

87

J'essaie de mettre à jour ma bibliothèque de support jusqu'à 23.2.0 et je fais face à cette erreur:

Exception while inflating <vector>
org.xmlpull.v1.XmlPullParserException: Binary XML file line #17<vector> tag requires viewportWidth > 0
at android.support.graphics.drawable.VectorDrawableCompat.updateStateFromTypedArray(VectorDrawableCompat.java:535)
at android.support.graphics.drawable.VectorDrawableCompat.inflate(VectorDrawableCompat.java:472)
at android.support.graphics.drawable.VectorDrawableCompat.createFromXmlInner(VectorDrawableCompat.java:436)
at android.support.v7.widget.AppCompatDrawableManager$VdcInflateDelegate.createFromXmlInner(AppCompatDrawableManager.java:829)
at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:303)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:178)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

Et

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chotot.vn.dev/com.chotot.vn.v2.activities.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.v7.widget.Toolbar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.v7.widget.Toolbar
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
at android.content.res.Resources.loadDrawable(Resources.java:2091)
at android.content.res.Resources.getDrawable(Resources.java:695)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:897)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:837)
at android.content.res.Resources.loadDrawable(Resources.java:2087)
at android.content.res.Resources.getDrawable(Resources.java:695)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

ma activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <fragment
        android:id="@+id/f_actionbar"
        android:name="com.chotot.vn.fragments.ActionBarFragment"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <android.support.v7.widget.Toolbar
        android:id="@+id/main_tool_bar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_alignParentTop="true"
        android:background="@color/action_bar_bg">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <include
                android:id="@+id/main_action_bar_layout"
                layout="@layout/layout_actionbar_custom_search"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:layout_gravity="top" />

            <LinearLayout
                android:id="@+id/main_action_bar_layout_content"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/main_action_bar_layout"
                android:orientation="vertical" />
        </RelativeLayout>
    </android.support.v7.widget.Toolbar>

    <FrameLayout
        android:id="@+id/layout_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/main_tool_bar" />

</RelativeLayout>

Comment puis-je y remédier?

mr.icetea
la source
30
Je commence à abandonner le développement Android comme un ensemble & ** & # $! Je ne peux pas croire que j'ai gaspillé une grande partie de ma vie en tant que personne individuelle à passer à une nouvelle version du SDK pour corriger le bogue qu'ils introduisent sur la version précédente et maintenant ceci! ARRGGGGHHH!
Neon Warge
1
J'ai opté pour l'API v23.1.0: P
Neon Warge
4
ayant le même problème 24.0.0si quelqu'un a des conseils à ce sujet, partagez-le, j'ai vraiment tout essayé.
wviana
1
@NeonWarge ... J'ai fait le tour du pâté de maisons plusieurs fois maintenant. Ces réponses ne font rien pour moi. Je suis sûr de commencer à ressentir de la douleur
Jan Jansz

Réponses:

54

Utilisez ce code dans votre fichier build.gradle

    //for Gradle Plugin 2.0+  
 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }

Si vous utilisez Gradle 1.5, vous utiliserez à la place

defaultConfig {
        generatedDensities = []
    }

    // This is handled for you by the 2.0+ Gradle Plugin
    aaptOptions {
        additionalParameters "--no-version-vectors"
    }

Je pense qu'ils utilisent peut-être un compact vectoriel dessiné en dessous dans une autre bibliothèque trouvée ici

Ajinkya
la source
7
@ MAY3AM désolé pas essayé sur Eclipse. Je pensais que l'éclipse est obsolète pourquoi l'utilisez vous.
Ajinkya
6
Ce qui a finalement résolu mon problème a été la réponse de @ wonglik, de définir: buildToolsVersion "23.0.2".
Sid
1
N'oubliez pas d'utiliser app: srcCompat au lieu de android: src dans le xml pour utiliser les dessins vectoriels sur <21 appareils.
Timo
1
ça ne marche pas pour moi. ma configuration est la suivante: buildToolsVersion "23.0.2"; classpath 'com.android.tools.build:gradle:2.0.0-beta6'; defaultConfig {vectorDrawables.useSupportLibrary = true}
Allen Vork
6
Cette solution ne fonctionne pas pour moi. Could not find property 'vectorDrawables' on ProductFlavor_Decorated
Mulgard
28

Vous pouvez également passer à la 23.4.0

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

et utilisez un indicateur pour activer manuellement cette fonctionnalité:

static
{
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

à l'intérieur de l'activité qui utilise les vecteurs.

Source: Âge des vecteurs

iCantSeeSharp
la source
l'appel statique à l'intérieur d'une activité de base résoudra le problème pour tous les développeurs qui ont du mal avec vectorDrawables.useSupportLibrary = true, donc +1 pour cette réponse.
Stoycho Andreev
Oh, ♫ c'est une sorte de magie ♫. J'utilise com.android.support:appcompat-v7:25.3.1l'application en cours d'exécution dans l'API 19. La configuration par défaut est vectorDrawables.useSupportLibrary = truemais elle plantait lors de la définition d'ImageSwitcher pouvant être dessinée avec un vecteur. Enfin, avec cette déclaration statique, je suis capable de setImageResource avec le vecteur drawable. Il semble que le SDK Android soit à la fois incroyable et imagé.
Junior Mayhé du
26

Veuillez supprimer l'appcompat gradle ( compile "com.android.support:appcompat-v7:23.2.0") et le remplacer par support design ( compile 'com.android.support:design:23.1.1') cela résoudra le problème

Abhilash
la source
Ces changements doivent-ils également être effectués avec 23.1.1 defaultConfig {generatedDensities = []} // Ceci est géré pour vous par le plugin Gradle 2.0+ aaptOptions {additionalParameters "--no-version-vectors"}
Ravi
20
mais que faire si vous souhaitez utiliser la dernière bibliothèque appcompact ??
Ajinkya
23

Sur les appareils pré-lollipop, vous devez créer un sélecteur pour utiliser VectorDrawable ailleurs depuis ImageView

app:srcCompat="@drawable/your_vector_drawable"

Sélecteur:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/your_vector_drawable" />

</selector>

Ensuite, vous pouvez passer ce sélecteur, par exemple pour TextView drawableLeft / drawableRight en xml

<TextView
        android:gravity="center_vertical"
        android:drawableLeft="@drawable/selector_your_vector_drawable"
        android:drawableStart="@drawable/selector_your_vector_drawable"
        android:drawableRight="@drawable/selector_your_vector_drawable"
        android:drawableEnd="@drawable/selector_your_vector_drawable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/your_string" />
Nikita Axyonov
la source
Indépendamment des versions de build.gradle, cette solution fonctionnera
PsyGik
J'ai vectorDrawables.useSupportLibrary = true dans l'application build.gradle et j'utilise compileSdkVersion 25 et buildToolsVersion "25.0.0" et les révisions des bibliothèques de dépendances 25.0.0 mais pas aidé à useSupportLibrary, c'est la meilleure solution merci @ n1ck !!!
mr.boyfox
Cette solution ne casse pas sur la bibliothèque de support 25.00 et 24 aussi, j'ai testé sur tablette Android 4.2.2 (ne supporte pas google play) et cette solution fonctionne comme du charme!
mr.boyfox
Cela fonctionne à partir d'aujourd'hui [buildtools 25+] - rien d'autre ne fonctionne pour les android:drawableattributs en xml: s faisant référence à des dessins vectoriels. C'est soit cela, soit la définition de l'arrière-plan pouvant être dessiné par programme. Wth!
Pär Nils Amsen
22

Au lieu de ContextCompat.getDrawable , utilisez simplement AppCompatDrawableManager.get (). GetDrawable .

Cela devrait fonctionner sur les versions supérieures à 23. +

Ivelius
la source
1
J'essaie d'utiliser le vecteur pour une vue personnalisée. Cela fonctionne pour moi. Mais n'appelez directement que AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);par code. Je ne sais pas comment cela fonctionne s'il est déclaré par xml.
Robert
1
ce changement en lui-même a résolu le problème pour moi. Merci.
albert c braun
1
Ce problème a également résolu. Merci mon pote !
rana
1
Vous pouvez également utiliser:AppCompatResources.getDrawable(getContext(), R.drawable.drawable_xyz);
Warcello
19

En utilisant:

compileSdkVersion 24
buildToolsVersion '24.0.1'

Je me suis écrasé au moment de l'exécution jusqu'à ce que je supprime la ligne

  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }

depuis mon application guild.gradle

Cela semble confondre la nouvelle version du SDK

J'espère que cela sauve des maux de tête à quelqu'un d'autre

Mark Z. Kumler
la source
Cela m'aide.
Sergey Shustikov
1
La suppression de ectorDrawables.useSupportLibrary a arrêté les plantages sur mon appareil 4.4.2.
Acapulco
Wow ça marche vraiment! Mais pourquoi il y a une erreur de peluche gênante avec app:srcCompat To use VectorDrawableCompat, you need to set android.defaultConfig.vectorDrawable.useSupportLibrary = true.? C'est très déroutant!
HendraWD
12

J'ai résolu ce problème en remplaçant

dependencies {

compile 'com.android.support:appcompat-v7:23.2.0'

compile 'com.android.support:design:23.2.0'
}

avec

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

compile 'com.android.support:design:23.0.1'
}
Abhijeet Mallick
la source
10

Un mélange de quelques-unes des solutions ci-dessus a fonctionné pour moi. Voici ce que j'ai fait -

Changer la version gradle de 1.3.0 à 1.5.0 dans build.gradledes projets comme celui - ci

classpath 'com.android.tools.build:gradle:1.5.0'

Mise à jour ci - dessous dans les choses build.gradlede l' application

buildToolsVersion "23.0.2"

Dépendances de module mises à jour de 23.2.0 à 23.4.0:

compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:support-vector-drawable:23.4.0'
compile 'com.android.support:animated-vector-drawable:23.4.0'

Maintenant, selon la version de gradle que vous utilisez, utilisez l'un des deux extraits de code suivants. Depuis que j'utilise gradle 1.5.0, j'ai utilisé ceci -

defaultConfig {
            generatedDensities = []
            }

    aaptOptions {
        additionalParameters "--no-version-vectors"
        }

Mais si vous utilisez Gradle 2.1.0, utilisez ceci à la place

       defaultConfig {  
         vectorDrawables.useSupportLibrary = true  
         }

Et puis vous êtes prêt à partir. Je l'ai testé à la fois en xml et par programme. Dans un fichier xml, j'ai utilisé ceci dans mon ImageView -

app:srcCompat="@drawable/anim_droid"
// where droid_anim is an animated-vector file containing set of animations to animate different paths of the SVG file

Et pour le faire par programme, j'ai utilisé ceci -

    imageView.setImageResource(R.drawable.anim_droid);
    Drawable drawable = imageView.getDrawable();
    if (drawable instanceof Animatable) {
      ((Animatable) drawable).start();
    }

J'espère que ça aide! À votre santé :)

Shubhral
la source
9

Avait le même problème. Pour moi, la mise à niveau de la version des outils de construction a aidé:

buildToolsVersion "23.0.2"
wonglik
la source
9

Faites face au problème de plantage sur l'API 19 lors de la mise à jour vers 23.2.0. J'ai résolu ce problème en mettant à jour la version vers 23.2.1. (La dernière version lorsque vous répondez à cette question. Essayez de mettre à jour vers la dernière, peut-être que Google l'a corrigé)

compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support:23.2.1'.
Tiegeda
la source
1
Pourquoi avez-vous besoin de compiler le tout 'com.android.support:support:23.2.1'?
IgorGanapolsky
Le dernier pour le moment compile 'com.android.support:support-v4:23.3.0' compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.android.support:design:23.3.0 '
Alexandr
7

Assurez-vous également d'utiliser la dernière version buildToolsVersion(téléchargez à partir du gestionnaire de SDK si nécessaire).

Exemple de Gradle:

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    defaultConfig {
        ...
        vectorDrawables.useSupportLibrary = true
    }
    dependencies {
        ...
        compile 'com.android.support:appcompat-v7:24.0.0'
        ...
    }
}
Beaucoup de débordement
la source
3
buildToolsVersion "24.0.0" sauve ma journée :)
NullPointer
C'est la bonne réponse pour qui essaie de mettre à jour pour compiler sdk 24 mais qui obtenait toujours une erreur sur les périphériques 4.x.
fillobotto le
4

Dans Gradle (gradle: 2.1.0):

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

Dans la mise en page:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:srcCompat="@drawable/you_vector_drawable"/>
bitvale
la source
3

J'ai eu ce problème, mais la mise à jour vers les versions build: grade:

classpath 'com.android.tools.build:gradle:1.5.0'

Et:

buildToolsVersion "23.0.2"

Succès!

Ds numérique
la source
3

Remplacer android:srcparapp:srcCompat

AnupamChugh
la source
2

J'ai été surpris par ce même problème lorsque j'ai créé une nouvelle version de mon application. Ma dépendance à appcompact a été définie sur la mise à jour automatique.

compile 'com.android.support:appcompat-v7:23+'

Ainsi, dès qu'une nouvelle version est disponible (dans ce cas la version 23.2.0), elle remplacera l'ancienne avec laquelle vous étiez en train de construire.

Vous pouvez donc revenir à la version précédente de la bibliothèque appcompat (solution rapide):

compile 'com.android.support:appcompat-v7:23.1.1'

Ou conservez la version actuelle de la bibliothèque et utilisez la réponse d' Ajinkya comme expliqué par google dans la note de publication de la version 23.2.0 . Si vous optez pour la version ultérieure, n'oubliez pas de mettre à jour votre outil de construction gradle vers la version 1.5.0 ou vous ne pourriez pas utiliser les nouveaux paramètres tels que generatedDensities:

classpath 'com.android.tools.build:gradle:1.5.0'
Gomino
la source
2

Face au même problème, cette solution l'a résolu.

Dans ta classe, fais juste

public class YourClass extends xxx {
    static {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }
    ...
}

et ajoutez également ceci dans votre fichier gradle si pas encore.

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}
Gomez NL
la source
1

Je l'ai corrigé en paramétrant ..

compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1' and buildToolsVersion '24.0.0'
Rcc
la source
J'ai essayé mais n'a pas fonctionné pour moi ... Utilisation d'Android-IDE
Karyuu Ouji
1

J'ai rencontré ce problème aussi, ce que j'ai fait: changer

compileSdkVersion 24
buildToolsVersion "22.0.1"

à

compileSdkVersion 24
buildToolsVersion "24.0.1"
极速 24 号
la source
1

Insérer dans build.gradle (Module: app):

android {  
  defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
  }  
}

dependencies {
    implementation 'com.android.support:appcompat-v7:26.1.0'
}

Ensuite, utilisez le code ci-dessous, dans votre AppActivity:

 AppCompatResources.getDrawable(getContext(), R.drawable.ic_your);

Le cas échéant, utilisez l' application: srcCompat au lieu de android: src et android: background , dans un fichier de ressources XML

Amiron
la source
0

J'ai eu ce problème, mais la mise à jour vers les versions ci-dessous l'a résolu pour moi:

classpath 'com.android.tools.build:gradle:1.5.0'

Et:

buildToolsVersion "23.0.2"

Dépendances du module:

compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.2.0'

compile 'com.google.android.gms:play-services:8.4.0'
T.Coutlakis
la source
0

J'ai résolu le problème en remplaçant

compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.2.0'

avec

compile 'com.android.support:appcompat-v7:23.0.2'
compile 'com.android.support:support-v4:23.0.2'
AnkitSingh2099
la source
0

J'ai eu cette même erreur dans Android Studio 2.2 après avoir mis à jour mes dépendances Gradle vers les dernières versions, mais j'ai oublié de mettre à jour la buildToolsVersion de mon projet.

J'ai changé:

compile 'com.android.support:appcompat-v7:22.2.1'

à:

compile 'com.android.support:appcompat-v7:24.2.1'

Alors que buildToolsVersion est resté "22.0.1"comme ça:

buildToolsVersion "22.0.1"

Donc tout ce que j'ai fait était de mettre à jour la buildToolsVersion à 24 comme ceci:

buildToolsVersion "24"

car il a été précédemment téléchargé avec SDK Manager. Vérifiez donc la dernière version buildToolsVersiondu SDK Manager et voyez si elle correspond à la version des dépendances.

J'espère que cela aide quelqu'un.

Cletus Ajibade
la source
0

Pour moi, ce qui a fonctionné ... a été de supprimer le 's' de 'https' dans la déclaration d'espace de noms de mon vecteur xml dessiné.

Ce XML provient de la documentation Google Android elle-même. Vous pouvez voir dans la capture d'écran que le xmlns est 'http' mais dans la version copiable ci-dessous, c'est 'https'.

Cela arrêtera les erreurs de rendu dans la visionneuse Vector Asset, mais vous ne verrez toujours rien, pour des raisons que je ne comprends pas. C'est censé ressembler à une clé.

Si vous cliquez avec le bouton droit sur le dossier Drawables et "Nouveau -> Vector Asset", vous obtenez un actif d'icône Android qui fonctionne.

<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="#FF000000"
        android:pathData="M6,18c0,0.55 0.45,1 1,1h1v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L11,19h2v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L16,19h1c0.55,0 1,-0.45 1,-1L18,8L6,8v10zM3.5,8C2.67,8 2,8.67 2,9.5v7c0,0.83 0.67,1.5 1.5,1.5S5,17.33 5,16.5v-7C5,8.67 4.33,8 3.5,8zM20.5,8c-0.83,0 -1.5,0.67 -1.5,1.5v7c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5v-7c0,-0.83 -0.67,-1.5 -1.5,-1.5zM15.53,2.16l1.3,-1.3c0.2,-0.2 0.2,-0.51 0,-0.71 -0.2,-0.2 -0.51,-0.2 -0.71,0l-1.48,1.48C13.85,1.23 12.95,1 12,1c-0.96,0 -1.86,0.23 -2.66,0.63L7.85,0.15c-0.2,-0.2 -0.51,-0.2 -0.71,0 -0.2,0.2 -0.2,0.51 0,0.71l1.31,1.31C6.97,3.26 6,5.01 6,7h12c0,-1.99 -0.97,-3.75 -2.47,-4.84zM10,5L9,5L9,4h1v1zM15,5h-1L14,4h1v1z"/>

Ma conception et mon appcompat-v7 utilisent 23.2.1 et buildToolsVersion 23.0.2.

Ceci vient d'entrer. La clé générée par le fichier d'interface 'icônes de matériau' -> nouveau -> élément vectoriel -> icône de matériau (puis cliquez sur l'icône et sélectionnez la clé) est:

<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="#FF000000"
        android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z"/>
</vector>

Cet utilitaire en ligne a bien fonctionné pour moi. Utilisez Chrome. Il convertit SVG en dessin vectoriel Android.

Jan Jansz
la source
0

le problème était:

/VdcInflateDelegate: Exception while inflating <vector>

Solution:

changé compileSdkVersion 23 buildToolsVersion "23.0.2" encompileSdkVersion 24 buildToolsVersion "24.0.2"

code de solution:

compileSdkVersion 24
buildToolsVersion '24.0.1'

en utilisant ce code ci-dessus, j'ai résolu le problème

shafiq-ur-rehman
la source
0

Ajoutez simplement la dépendance suivante dans votre build.gradle. cela résoudra votre problème. J'utilise 25.0.2 buildToolsVersion.

compilez 'com.android.support:support-vector-drawable:25.3.0'

Nanda Gopal
la source
0

J'ai changé le FragmentActivity en AppCompatActivity, le problème est résolu. Mon environnement est:

compileSdkVersion = 25
buildToolsVersion = "25.0.0"
supportVersion = "25.2.0"
ttdevs
la source
0

Dans mon cas, cette solution a fonctionné:

Utilisation

android:theme="@style/TextLabelWhite"

tout comme dans votre xml. Remplacez le style parent par votre style AppTheme, comme:

<style name="TextLabelWhite" parent="AppTheme">
Alex Jolig
la source
0

Même si la prise en charge du vecteur est activée dans mon gradle et que j'ai la dernière version de gradle, des outils de construction, une bibliothèque de support et un studio Android, j'ai toujours l'erreur.

Voici un correctif pour mon cas:

AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);

pour supprimer l'avertissement de peluche, ajoutez ceci @SuppressLint("RestrictedApi")

Mohamed ALOUANE
la source
0

essayez d'utiliser: compilez 'com.android.support:design:23.1.1'

au lieu de: compilez "com.android.support:appcompat-v7:23.2.0"

FatalMan
la source
0

Également observé sur buildToolsVersion '26 .0.2 '

La mise à niveau vers buildToolsVersion '25 .0.3 'a fonctionné .

Pour buildToolsVersion '26 .0.2 ': Essayez AppCompat pour les widgets Exemple: TextView -> android.support.v7.widget.AppCompatTextView (Pour la prise en charge des anciennes versions d'Android) Également observé sur les appareils bas de gamme lorsque l'appareil est incapable de gonfler les drawables en raison de la mémoire (même si le drawable existe dans votre répertoire res-> drawable): Essayez de changer votre drawable avec des moins complexes .

PC Sandeep
la source