Aktualisieren Sie die Android-Unterstützungsbibliothek auf 23.2.0 und verursachen Sie Fehler: XmlPullParserException Für das binäre XML-Dateizeil # 17 <vector> -Tag ist viewportWidth> 0 erforderlich


87

Ich versuche, meine Support-Bibliothek auf 23.2.0 zu aktualisieren und stelle diesen Fehler fest:

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)

Und

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)

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

Wie kann ich es reparieren?



30
Ich fange an, die Android-Entwicklung als Ganzes aufzugeben! Ich kann nicht glauben, dass ich als Einzelperson viel Zeit damit verschwendet habe, auf eine neue SDK-Version zu aktualisieren, um den Fehler zu beheben, den sie in der vorherigen Version eingeführt haben, und jetzt dies! ARRGGGGHHH!
Neon Warge

1
Ich entschied mich für API v23.1.0: P
Neon Warge

4
24.0.0Wenn jemand das gleiche Problem hat, wenn jemand Tipps dazu hat, teile es bitte mit. Ich habe wirklich alles versucht.
Wviana

1
@NeonWarge ... Ich war jetzt ein paar Mal in der Nähe. Diese Antworten tun nichts für mich.
Jan Jansz

Antworten:


54

Verwenden Sie diesen Code in Ihrer build.gradle-Datei

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

Wenn Sie Gradle 1.5 verwenden, verwenden Sie stattdessen

defaultConfig {
        generatedDensities = []
    }

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

Ich denke, vielleicht verwenden sie Vector Drawable Compact darunter in anderen lib.found hier


7
@ MAY3AM Entschuldigung, nicht auf Eclipse ausprobiert. Ich dachte, Eclipse ist veraltet, warum benutzt du es?
Ajinkya

6
Was mein Problem schließlich löste, war @ wongliks Antwort: setToolsVersion "23.0.2".
Sid

1
Denken Sie daran, app: srcCompat anstelle von android: src in der XML zu verwenden, um die Vektorzeichnungen auf <21 Geräten zu verwenden.
Timo

1
Das funktioniert bei mir nicht. Meine Konfiguration ist wie folgt: buildToolsVersion "23.0.2"; Klassenpfad 'com.android.tools.build:gradle:2.0.0-beta6'; defaultConfig {vectorDrawables.useSupportLibrary = true}
Allen Vork

6
Diese Lösung funktioniert bei mir nicht. Could not find property 'vectorDrawables' on ProductFlavor_Decorated
Mulgard

28

Sie können auch auf 23.4.0 aktualisieren

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

und verwenden Sie ein Flag, um diese Funktionalität manuell zu aktivieren:

static
{
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

innerhalb der Aktivität, die die Vektoren verwendet.

Quelle: Alter der Vektoren


Der statische Aufruf innerhalb einer Basisaktivität behebt das Problem für alle Entwickler, die mit vectorDrawables.useSupportLibrary = true zu kämpfen haben, also +1 für diese Antwort.
Stoycho Andreev

Oh, es ist eine Art Magie. Ich verwende com.android.support:appcompat-v7:25.3.1die App in API 19. Die Standardkonfiguration ist, vectorDrawables.useSupportLibrary = trueaber sie stürzte ab, als ImageSwitcher mit einem Vektor gezeichnet werden konnte. Schließlich kann ich mit dieser statischen AnweisungImageResource mit dem Vektor drawable setzen. Es scheint, dass Android SDK sowohl erstaunlich als auch unreif ist.
Junior Mayhé

26

Bitte entfernen Sie das appcompat gradle ( compile "com.android.support:appcompat-v7:23.2.0") und ersetzen Sie es durch support design ( compile 'com.android.support:design:23.1.1'). Dadurch wird das Problem behoben


Sind auch diese Änderungen mit 23.1.1 DefaultConfig getan werden {generatedDensities = []} // Das ist für dich von den 2.0+ Gradle Plugin aaptOptions behandelt wird {additionalParameters "--no-Version-Vektoren"}
Ravi

20
aber was ist, wenn Sie die neueste Appcompact-Bibliothek verwenden möchten?
Ajinkya

23

Auf Pre-Lollipop-Geräten müssen Sie einen Selektor erstellen, um VectorDrawable an anderer Stelle in ImageView verwenden zu können

app:srcCompat="@drawable/your_vector_drawable"

Wähler:

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

Dann können Sie diesen Selektor übergeben, z. B. für TextView drawableLeft / drawableRight in 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" />

Unabhängig von den Versionen in build.gradle wird diese Lösung funktionieren
PsyGik

Ich habe vectorDrawables.useSupportLibrary = true in der App build.gradle und verwende compileSdkVersion 25 und buildToolsVersion "25.0.0" sowie die Revisionen 25.0.0 für Abhängigkeitsbibliotheken, aber die Verwendung von SupportLibrary wurde nicht unterstützt.
Mr. Boyfox

Diese Lösung funktioniert auch nicht in der Support-Bibliothek 25.00 und 24. Ich habe sie auf einem Android 4.2.2-Tablet getestet (unterstützt Google Play nicht) und diese Lösung funktioniert wie ein Zauber!
Mr. Boyfox

Dies funktioniert ab heute [buildtools 25+] - nichts anderes funktioniert für android:drawableAttribute in xml: s, die auf Vektorzeichnungen verweisen. Entweder dies oder das programmgesteuerte Einstellen des Hintergrunds. Wth!
Pär Nils Amsen

22

Verwenden Sie anstelle von ContextCompat.getDrawable einfach AppCompatDrawableManager.get (). GetDrawable .

Dies sollte bei Versionen über 23. + funktionieren


1
Ich versuche, Vektor für benutzerdefinierte Ansicht zu verwenden. Das funktioniert bei mir. Aber nur direkt AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);per Code aufrufen . Ich bin mir nicht sicher, wie es funktioniert, wenn es von xml deklariert wird.
Robert

1
Diese Änderung allein hat das Problem für mich behoben. Danke.
Albert C Braun

1
Dieses Problem wurde ebenfalls behoben. Danke Kumpel!
Rana

1
Sie können auch verwenden:AppCompatResources.getDrawable(getContext(), R.drawable.drawable_xyz);
Warcello

19

Verwenden von:

compileSdkVersion 24
buildToolsVersion '24.0.1'

Ich bin zur Laufzeit abgestürzt, bis ich die Leitung entfernt habe

  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }

aus meiner Anwendung guild.gradle

Dies scheint die neuere Version des SDK zu verwirren

Hoffe, das erspart jemand anderem Kopfschmerzen


Das hilft mir.
Sergey Shustikov

1
Durch Entfernen der ectorDrawables.useSupportLibrary wurden die Abstürze auf meinem 4.4.2-Gerät gestoppt.
Acapulco

Wow es funktioniert wirklich! Aber warum gibt es einen nervigen Flusenfehler mit app:srcCompat To use VectorDrawableCompat, you need to set android.defaultConfig.vectorDrawable.useSupportLibrary = true.? Es ist sehr verwirrend!
HendraWD

12

Ich habe dieses Problem durch Ersetzen behoben

dependencies {

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

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

mit

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

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

10

Eine Mischung aus wenigen der oben genannten Lösungen hat bei mir funktioniert. Folgendes habe ich getan:

Ändern gradle Version von 1.3.0 bis 1.5.0 in build.gradledem Projekt wie diese

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

Update unten Dinge in build.gradleder App

buildToolsVersion "23.0.2"

Aktualisierte Modulabhängigkeiten von 23.2.0 auf 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'

Verwenden Sie nun abhängig von der verwendeten Gradle-Version eines der beiden folgenden Snippets. Da ich Gradle 1.5.0 verwende, habe ich Folgendes verwendet:

defaultConfig {
            generatedDensities = []
            }

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

Wenn Sie jedoch Gradle 2.1.0 verwenden, verwenden Sie dies stattdessen

       defaultConfig {  
         vectorDrawables.useSupportLibrary = true  
         }

Und dann können Sie loslegen. Ich habe es sowohl in XML als auch programmgesteuert getestet. In der XML-Datei habe ich dies in meiner ImageView verwendet -

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

Und um es programmatisch zu machen, habe ich dies verwendet -

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

Ich hoffe es hilft! Prost :)


9

Hatte das gleiche Problem. Für mich hat das Upgrade der Build Tools-Version geholfen:

buildToolsVersion "23.0.2"

9

Stellen Sie sich dem Absturzproblem auf API 19, wenn Sie auf 23.2.0 aktualisieren. Ich habe dieses Problem gelöst, indem ich die Version auf 23.2.1 aktualisiert habe. (Die neueste Version bei Beantwortung dieser Frage. Versuchen Sie, auf die neueste Version zu aktualisieren. Möglicherweise wurde sie von Google behoben.)

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

1
Warum müssen Sie das Ganze kompilieren 'com.android.support:support:23.2.1'?
IgorGanapolsky

Die neuesten für den Moment kompilieren 'com.android.support:support-v4:23.3.0' kompilieren 'com.android.support:appcompat-v7:23.3.0' kompilieren 'com.android.support:design:23.3.0 '
Alexandr

7

Stellen Sie sicher, dass Sie auch die neueste buildToolsVersionVersion verwenden (bei Bedarf vom SDK-Manager herunterladen).

Beispiel Gradle:

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    defaultConfig {
        ...
        vectorDrawables.useSupportLibrary = true
    }
    dependencies {
        ...
        compile 'com.android.support:appcompat-v7:24.0.0'
        ...
    }
}

3
buildToolsVersion "24.0.0" rette meinen Tag :)
NullPointer

Dies ist die richtige Antwort für diejenigen, die versuchen, ein Update zum Kompilieren von SDK 24 durchzuführen, aber auf 4.x-Geräten immer noch Fehler erhalten haben.
Fillobotto

4

In Gradle (Gradle: 2.1.0):

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

Im Layout:

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

3

Ich hatte dieses Problem, aber das Update auf die Versionen build: grade:

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

Und:

buildToolsVersion "23.0.2"

Erfolg!



2

Ich wurde von genau demselben Problem überrascht, als ich eine neue Version meiner App erstellte. Meine Abhängigkeit von appcompact wurde auf automatische Aktualisierung eingestellt.

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

Sobald eine neue Version verfügbar ist (in diesem Fall Version 23.2.0), ersetzt sie die alte, mit der Sie erstellt haben.

Sie können also entweder zur vorherigen Version der Appcompat-Bibliothek zurückkehren (Schnellkorrektur):

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

Oder halten Sie die aktuelle Version der Bibliothek und verwenden Ajinkya ‚s Antwort , wie erklärt Google in Version 23.2.0 Release-Info . Wenn Sie sich für die spätere Version entscheiden, vergessen Sie nicht, Ihr Gradle-Build-Tool auf Version 1.5.0 zu aktualisieren, da Sie sonst die folgenden neuen Parameter nicht verwenden können generatedDensities:

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

2

Diese Lösung hat das gleiche Problem behoben.

In deiner Klasse tu es einfach

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

und fügen Sie dies auch in Ihre Gradle-Datei ein, falls noch nicht geschehen.

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

1

Ich habe es durch Einstellen behoben.

compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1' and buildToolsVersion '24.0.0'

Versuchte dies, funktionierte aber nicht für mich ... Verwenden von Android-IDE
Karyuu Ouji

1

Ich bin auch auf dieses Problem gestoßen, was ich getan habe: Veränderung

compileSdkVersion 24
buildToolsVersion "22.0.1"

zu

compileSdkVersion 24
buildToolsVersion "24.0.1"

1

In build.gradle einfügen (Modul: App):

android {  
  defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
  }  
}

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

Verwenden Sie anschließend den folgenden Code in Ihrer AppActivity:

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

Wo verfügbar, verwenden Sie stattdessen die App: srcCompat android: src und android: background in der XML- Ressourcendatei


0

Ich hatte dieses Problem, aber das Update auf die folgenden Versionen hat es für mich behoben:

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

Und:

buildToolsVersion "23.0.2"

Modulabhängigkeiten:

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'

0

Ich habe das Problem durch Ersetzen behoben

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

mit

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

0

Ich habe denselben Fehler in Android Studio 2.2 erhalten, nachdem ich meine Gradle-Abhängigkeiten auf die neuesten Versionen aktualisiert habe, aber vergessen habe, die buildToolsVersion meines Projekts zu aktualisieren.

Ich habe mich verändert:

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

zu:

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

Während buildToolsVersion so blieb "22.0.1":

buildToolsVersion "22.0.1"

Alles, was ich getan habe, war, die buildToolsVersion wie folgt auf 24 zu aktualisieren:

buildToolsVersion "24"

da es zuvor mit SDK Manager heruntergeladen wurde. Überprüfen Sie daher die neueste buildToolsVersionVersion von SDK Manager und prüfen Sie, ob sie mit der Abhängigkeitsversion übereinstimmt.

Hoffe das hilft jemandem.


0

Für mich hat es funktioniert ... das 's' aus 'https' in der Namespace-Deklaration meines XML-Vektors zu entfernen.

Dieses XML stammt aus der Google Android-Dokumentation.Sie können im Screenshot sehen, dass die XML-Datei "http" ist, in der unten kopierbaren Version jedoch "https".

Dadurch werden die Renderfehler im Vector Asset Viewer gestoppt, aber aus Gründen, die ich nicht verstehe, wird immer noch nichts angezeigt. Es soll wie ein Schraubenschlüssel aussehen.

Wenn Sie mit der rechten Maustaste auf den Ordner "Drawables" und dann auf "Neu -> Vektor-Asset" klicken, erhalten Sie ein Android-Symbol-Asset, das funktioniert.

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

Sowohl mein Design als auch mein Appcompat-v7 verwenden 23.2.1 und buildToolsVersion 23.0.2.

Dies ist nur in. Der Schraubenschlüssel, der von der Schnittstellendatei 'Material Icons' -> Neu -> Vektor-Asset -> Material-Symbol (dann auf das Symbol klicken und Schraubenschlüssel auswählen) generiert wird, lautet:

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

Dieses Online-Dienstprogramm wurde von mir in Ordnung gebracht. Verwenden Sie Chrome. Es konvertiert SVG in Android Vector Drawables.


0

Problem war:

/VdcInflateDelegate: Exception while inflating <vector>

Lösung:

geändert compileSdkVersion 23 buildToolsVersion "23.0.2" zucompileSdkVersion 24 buildToolsVersion "24.0.2"

Lösungscode:

compileSdkVersion 24
buildToolsVersion '24.0.1'

Mit diesem obigen Code habe ich das Problem gelöst


0

Fügen Sie einfach die folgende Abhängigkeit in Ihr build.gradle ein. Dies wird Ihr Problem beheben. Ich verwende 25.0.2 buildToolsVersion.

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


0

Ich habe die FragmentActivity in AppCompatActivity geändert, das Problem ist gelöst. Meine Umgebung ist:

compileSdkVersion = 25
buildToolsVersion = "25.0.0"
supportVersion = "25.2.0"

0

In meinem Fall hat diese Lösung funktioniert:

Verwenden

android:theme="@style/TextLabelWhite"

genau wie in deiner xml. Ändern Sie den übergeordneten Stil in Ihren AppTheme-Stil wie folgt:

<style name="TextLabelWhite" parent="AppTheme">

0

Obwohl ich die Unterstützung von Vektor in meinem Gradle aktiviert habe und die neueste Version von Gradle, Build-Tools, Support-Bibliothek und Android Studio habe, habe ich immer noch den Fehler erhalten.

Hier eine Lösung für meinen Fall:

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

Fügen Sie dies hinzu, um die Flusenwarnung zu unterdrücken @SuppressLint("RestrictedApi")


0

versuchen Sie zu verwenden: kompilieren Sie 'com.android.support:design:23.1.1'

anstelle von: compile "com.android.support:appcompat-v7:23.2.0"


0

Auch Beobachtet auf buildToolsVersion '26 .0.2'

Das Downgrade auf buildToolsVersion '25 .0.3 'hat funktioniert .

Für buildToolsVersion '26 .0.2 ': Probieren Sie AppCompat für Widgets aus. Beispiel: TextView -> android.support.v7.widget.AppCompatTextView (Für Unterstützung älterer Android- Versionen ) Wird auch auf Geräten der unteren Preisklasse beobachtet, wenn das Gerät aufgrund von Speicher keine Zeichen aufblasen kann Mangel. (Auch wenn das Drawable in Ihrem res-> drawable-Verzeichnis vorhanden ist): Versuchen Sie, Ihr Drawable durch weniger komplexe zu ändern .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.