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?

mr.icetea
quelle
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

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

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

Abhilash
quelle
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" />
Nikita Axyonov
quelle
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

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

Mark Z. Kumler
quelle
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'
}
Abhijeet Mallick
quelle
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 :)

Shubhral
quelle
9

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

buildToolsVersion "23.0.2"
wonglik
quelle
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'.
tiegeda
quelle
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'
        ...
    }
}
Viel Überlauf
quelle
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"/>
Bitvale
quelle
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!

Ds Digital
quelle
3

Ersetzen android:srcdurchapp:srcCompat

AnupamChugh
quelle
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'
Gomino
quelle
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
}
Gomez NL
quelle
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'
Rcc
quelle
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"
极速 24 号
quelle
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

Amiron
quelle
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'
T.Coutlakis
quelle
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'
AnkitSingh2099
quelle
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.

Cletus Ajibade
quelle
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.

Jan Jansz
quelle
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

Shafiq-ur-Rehman
quelle
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'

Nanda Gopal
quelle
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"
ttdevs
quelle
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">
Alex Jolig
quelle
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")

Mohamed ALOUANE
quelle
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"

FatalMan
quelle
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 .

Sandeep PC
quelle