2016-02-26 9 views
21

Dies ist eine Follow-up-Frage auf diese Frage:XmlPullParserException Binary XML-Datei Zeile # 17 <vector> Tag erfordert Viewportwidth> 0

Update Android Support Library to 23.2.0 cause error: XmlPullParserException Binary XML file line #17<vector> tag requires viewportWidth > 0

ich die Support-Bibliothek auf 23,2 ebenfalls aktualisiert und begann mit der Störung zu erhalten:

XmlPullParserException Binary XML file line #17<vector> tag requires viewportWidth > 0 

Diese Frage löste es für Android Studio und Gradle. Wie kann dies bei Verwendung von Eclipse ohne Gradle gelöst werden?

+0

Mögliche Duplikate von [Update Android Support Library auf 23.2.0 verursachen einen Fehler: XmlPullParserException Binäre XML-Dateizeile # 17 Tag erfordert ViewportWidth> 0] (http: // stackoverflow.com/questions/35622438/update-android-support-bibliothek-zu-23-2-0-cause-error-xmlpullparserexception-bin) –

Antwort

4

Eine frühere Antwort auf diese Frage für Entwickler eine Lösung hatte die Gradle verwenden, aber ich verwende Gradle nicht so will ich seine Antwort zusammenfassen, die geholfen mehrere Leute und was ich schließlich getan habe. Ich akzeptierte meine eigene Antwort und nicht seine, wie ich sagte, ich benutze Gradle nicht, also benutzte ich nicht, was er schrieb.

Ich habe mehrere Dinge getan, damit es am Ende funktioniert. Mögliche Lösungen sind:

Erste für Gradle Benutzer:

1) Revert die Support-Bibliothek auf eine ältere Version, da dies ein Fehler ist.

2) Verwenden Sie compile 'com.android.support:appcompat-v7:23.2.1', da der Fehler dort behoben wurde.

3) für Gradle Plugin 2.0:

android { 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
    } 
} 

Oder Sie können Grade-Tools 1.5.0 (classpath 'com.android.tools.build:gradle:1.5.0')

defaultConfig { 
    generatedDensities = [] 
} 

// keine Notwendigkeit für diese mit Gradle 2.0

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

Dies ist der Teil für Nicht-Gradle-Benutzer:

1) Öffnen Sie den SDK-Manager.

2) Uninstalled beide "Android Wear X" (wobei X ARM oder Intel) von APIs 22 und 23.

3) Ich habe dann hatte noch einen Übersetzungsfehler in einer der Stile der AppCompat Bibliothek. Ich habe sie einfach kommentiert (ich riskiere, dass das sehr spezifische Gerät nicht funktioniert, wenn es diesen sehr spezifischen Stil verwendet).

Danach putzte ich das Projekt und es begann gerade zu arbeiten.

9

Sie können entweder auf die vorherige Version der appcompat Bibliothek wechseln (Quick fix):

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

Oder die aktuelle Version der Bibliothek halten und das entsprechende Update auf Build-gradle Datei von google in version 23.2.0 release note wie erklärt machen.

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

Wenn Sie Gradle 1.5 verwenden werden Sie stattdessen verwenden

defaultConfig { 
    generatedDensities = [] 
} 

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

Vergessen Sie nicht, Ihre gradle Build-Tool auf Version 1.5.0 mindestens zu aktualisieren oder Sie nicht die neue verwenden könnte Parameter wie generatedDensities:

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

Mehr Infos darüber, warum here

+3

dies funktioniert für me.my gradle build tool version ist 1.3.1. Ich füge einfach aaptOptions { additionalParameters "--no-version-vectors" } zu meinem build.gradle hinzu, ohne generatedDensities = [] hinzuzufügen und es funktioniert –

+0

@AllenVork Ihr vorgeschlagener Weg funktioniert für mich. Danke –

+0

Ich bekomme das gleiche Problem.Und Vektor funktioniert auch nicht –

3

Für n ew Benutzer nur wird dieses Problem in fixed:

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

3

Ich habe diesen gleichen Fehler in Android Studio 2.2, nachdem ich meine Gradle Abhängigkeiten zu den neuesten Versionen aktualisiert habe, aber vergessen, die BuildToolsVersion meines Projekts zu aktualisieren.

I geändert:

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

zu:

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

Während buildToolsVersion bei "22.0.1" blieb in etwa so:

buildToolsVersion "22.0.1" 

Also alles, was ich tat, war die Aktualisierung buildToolsVersion zu 24 wie folgt:

buildToolsVersion "24" 

seit es zuvor mit SDK Manager heruntergeladen wurde. Überprüfen Sie daher den neuesten buildToolsVersion von SDK Manager und sehen Sie, ob es die Abhängigkeiten Version entspricht.

Ich hoffe, das hilft jemandem.

3

Ereignis nach dem Ausprobieren der bereits bereitgestellten Antworten, stürzte die App auf einigen Geräten (vor allem Samsung). So zusammen mit dem habe ich versucht, Vektor Drawables Laden wie dies

Drawable drawable = AppCompatDrawableManager.get().getDrawable(context, R.drawable.resource_id); 

Diese AppCompatDrawableManager intern versucht ziehbar zu holen mit verschiedenen Methoden:

Drawable getDrawable(@NonNull Context context, @DrawableRes int resId, 
      boolean failIfNotKnown) { 
     checkVectorDrawableSetup(context); 

     Drawable drawable = loadDrawableFromDelegates(context, resId); 
     if (drawable == null) { 
      drawable = createDrawableIfNeeded(context, resId); 
     } 
     if (drawable == null) { 
      drawable = ContextCompat.getDrawable(context, resId); 
     } 

     if (drawable != null) { 
      // Tint it if needed 
      drawable = tintDrawable(context, resId, failIfNotKnown, drawable); 
     } 
     if (drawable != null) { 
      // See if we need to 'fix' the drawable 
      DrawableUtils.fixDrawable(drawable); 
     } 
     return drawable; 
    } 

So funktioniert es auf allen Android-Versionen und alle Geräten (hoffentlich) .

Hinweis: Do not versuchen, Picasso (2.5.2) s oder Glide (3.7.0) Methode zum Laden von Vektorzeichen zu verwenden. Weil sie intern die veraltete Methode getDrawable(@DrawableRes int id) verwenden. Dies führt bei einigen Geräten zu Resources.NotFoundException.

0

Für Leute wie mich, die immer noch Eclipse ohne Gradle verwenden, hatte ich diesen Fehler mit Android Support Library r23.2.0 läuft auf Pre-Lollipop-Geräten (API < 21).

Dieses Problem wurde in r23.2.1 behoben und ich konnte mein Projekt erfolgreich auf API-Ebene 16 ausführen.

Diese Version der Bibliothek für Eclipse ist nicht mehr über SDK Manager verfügbar, Sie können sie jedoch manuell von dieser link herunterladen.