2016-02-26 13 views
21

Questo è un follow-up domanda a questa domanda:XmlPullParserException richiede ViewportWidth> 0

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

ho anche aggiornato la libreria di supporto a 23,2 e ha iniziato a ottenere l'errore:

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

Questa domanda lo ha risolto per Android Studio e Gradle. Come può essere risolto con Eclipse senza Gradle?

+0

Possibile duplicato di [Aggiornamento libreria supporto Android a 23.2.0 causa errore: XmlPullParserException Binario XML file line # 17 tag richiede viewportWidth> 0] (http: // stackoverflow.it/questions/35622438/update-android-support-library-to-23-2-0-causa-error-xmlpullparserexception-bin) –

risposta

4

Un precedente risposta a questa domanda aveva una soluzione per gli sviluppatori che utilizzano Gradle, ma io non uso Gradle così voglio riassumere la sua risposta che ha contribuito diverse persone e quello che alla fine ho fatto. Ho accettato la mia risposta e non la sua da allora, come ho detto, non uso Gradle quindi non ho usato quello che ha scritto.

Ho fatto diverse cose per farlo funzionare alla fine. Le soluzioni possibili sono:

Prima per gli utenti Gradle:

1) Ripristinare la libreria di supporto a una versione precedente, dal momento che questo ha un bug.

2) utilizzare compilare 'com.android.support:appcompat-v7:23.2.1' come il bug è stato risolto lì.

3) per Gradle Plugin 2.0:

android { 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
    } 
} 

Oppure si può utilizzare Grade creare strumenti 1.5.0 (classpath 'com.android.tools.build:gradle:1.5.0')

defaultConfig { 
    generatedDensities = [] 
} 

// alcuna necessità per questo con Gradle 2.0

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

Questa è la parte per gli utenti non Gradle:

1) Aprire il gestore SDK.

2) Non attrezzato sia "Android Wear X" (dove X è ARM o Intel) da API 22 e 23.

3) Ho poi avuto ancora un errore di compilazione in uno degli stili della biblioteca AppCompat. Li ho semplicemente commentati (rischio che il dispositivo molto specifico non funzioni se utilizza uno stile molto specifico).

Successivamente ho pulito il progetto e ha appena iniziato a funzionare.

9

è possibile tornare alla versione precedente della libreria appcompat (correzione rapida):

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

o conservare la versione della libreria corrente ed effettuare l'aggiornamento appropriato al file Gradle accumulo come spiegato da google in version 23.2.0 release note.

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

Se si utilizza Gradle 1.5 si usa invece

defaultConfig { 
    generatedDensities = [] 
} 

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

Non dimenticare di aggiornare il vostro strumento di compilazione Gradle alla versione 1.5.0 o almeno non si poteva usare il nuovo parametri come generatedDensities:

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

altre informazioni su perché here

+3

questo funziona per me.my gradle build tool version è 1.3.1. aggiungo aaptOptions { additionalParameters "--no-version-vectors" } al mio build.gradle senza aggiungere generateDensities = [] e funziona –

+0

@AllenVork il modo suggerito funziona per me. Grazie –

+0

Sto ottenendo lo stesso problema. E anche il vettore non funziona –

3

Per n solo gli utenti ew, questo problema è stato risolto in:

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

3

Ho ricevuto lo stesso errore in Android Studio 2.2 dopo aver aggiornato le dipendenze di Gradle alle versioni più recenti, ma ho dimenticato di aggiornare il buildToolsVersion del mio progetto.

ho cambiato:

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

a:

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

Mentre buildToolsVersion rimasto a "22.0.1" in questo modo:

buildToolsVersion "22.0.1" 

Quindi tutto ho fatto è stato di aggiornare il buildToolsVersion a 24 così:

buildToolsVersion "24" 

poiché è stato precedentemente scaricato con SDK Manager. Quindi controlla l'ultimo buildToolsVersion da SDK Manager e verifica se corrisponde alla versione delle dipendenze.

Spero che questo aiuti qualcuno.

3

Evento dopo aver provato le risposte già fornite, l'app si è bloccata su alcuni dispositivi (principalmente Samsung). Quindi, insieme a questo, ho cercato di caricare drawable vettoriali come questo

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

Questo AppCompatDrawableManager cerca internamente per andare a prendere drawable con vari metodi:

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

Così funziona su tutte le versioni di Android e tutti i dispositivi (si spera) .

Nota: Non provare a utilizzare il metodo Picasso (2.5.2) o Glide (3.7.0) per caricare i drawable vettoriali. Perché utilizzano internamente il metodo deprecato getDrawable(@DrawableRes int id). Quale risulterà in Resources.NotFoundException su alcuni dispositivi.

0

Per le persone come me che usano ancora Eclipse senza Gradle, ho riscontrato questo errore con la libreria di supporto Android r23.2.0 in esecuzione su dispositivi pre-Lollipop (API < 21).

Questo problema è stato risolto in r23.2.1 e sono riuscito a eseguire correttamente il mio progetto al livello API 16.

Questa versione della libreria per Eclipse non è più disponibile tramite SDK Manager, tuttavia è possibile scaricarla manualmente da questo link.

Problemi correlati