android - studio - La etiqueta<vector> de la línea#17 del archivo XML binario XmlPullParserException requiere viewportWidth> 0
vector android studio (7)
Evento después de probar las respuestas ya proporcionadas, la aplicación se bloqueaba en algunos dispositivos (principalmente Samsung). Así que junto con eso, intenté cargar vectores dibujables como este
Drawable drawable = AppCompatDrawableManager.get().getDrawable(context, R.drawable.resource_id);
Este AppCompatDrawableManager
intenta recuperar de forma interna varios métodos:
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;
}
Por lo tanto, funciona en todas las versiones de Android y todos los dispositivos (con suerte).
Nota: No intente utilizar el método de Picasso (2.5.2) o Glide (3.7.0) para cargar dibujables vectoriales. Porque usan internamente el getDrawable(@DrawableRes int id)
desuso. Lo que resultará en Resources.NotFoundException
en algunos dispositivos.
Esta es una pregunta de seguimiento para esta pregunta:
También actualicé la biblioteca de soporte a 23.2 y comencé a recibir el error:
XmlPullParserException Binary XML file line #17<vector> tag requires viewportWidth > 0
Esa pregunta la resolvió para Android Studio y Gradle. ¿Cómo se puede resolver esto al utilizar Eclipse sin Gradle?
Para gente como yo que todavía usa Eclipse sin Gradle, tuve este error con la biblioteca de soporte de Android r23.2.0 ejecutándose en dispositivos pre-Lollipop (API <21).
Este problema se solucionó en r23.2.1 y pude ejecutar mi proyecto en el nivel 16 de API con éxito.
Esta versión de la biblioteca para Eclipse ya no está disponible a través del Administrador de SDK, sin embargo, puede descargarla manualmente desde este link .
Puede volver a la versión anterior de la biblioteca de appcompat (Solución rápida):
compile ''com.android.support:appcompat-v7:23.1.1''
O mantén la versión actual de la biblioteca y haz la actualización apropiada a tu archivo de gradle de compilación como lo explica Google en la versión 23.2.0 de la nota de lanzamiento .
//for Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Si está utilizando Gradle 1.5, en su lugar usará
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
No olvide actualizar su herramienta de construcción de gradle a la versión 1.5.0 al menos, o no podría usar los nuevos parámetros como, por ejemplo, las densidades generadas:
classpath ''com.android.tools.build:gradle:1.5.0''
Más información sobre por qué here
Recibí este mismo error en Android Studio 2.2 después de actualizar mis dependencias de Gradle a las últimas versiones, pero olvidé actualizar el buildToolsVersion de mi proyecto.
Cambié:
compile ''com.android.support:appcompat-v7:22.2.1''
a:
compile ''com.android.support:appcompat-v7:24.2.1''
Mientras que buildToolsVersion se mantuvo en "22.0.1" así:
buildToolsVersion "22.0.1"
Así que todo lo que hice fue actualizar buildToolsVersion a 24
así:
buildToolsVersion "24"
ya que ha sido descargado previamente con SDK Manager. Así que verifique el último buildToolsVersion
desde el Administrador de SDK y vea si coincide con la versión de dependencias.
Espero que esto ayude a alguien.
Si el problema está en la versión de la aplicación de lanzamiento. Esto resuelto para mi liberación. Creo que porque si pones shrinkResources true
las carpetas shrinkResources true
creadas no tienen los archivos dibujables
{
..
minifyEnabled true
shrinkResources false
}
Solo para usuarios nuevos, este problema se soluciona en:
compile ''com.android.support:appcompat-v7:23.2.1''
Una respuesta anterior a esta pregunta tenía una solución para los desarrolladores que usan Gradle, pero no uso Gradle, así que quiero resumir su respuesta que ayudó a varias personas y lo que finalmente hice. Acepté mi propia respuesta y no la suya, como dije, no uso Gradle, así que no utilicé lo que escribió.
Hice varias cosas para que funcione al final. Las posibles soluciones son:
Primero para los usuarios de Gradle:
1) Revertir la biblioteca de soporte a una versión anterior, ya que esta tiene un error.
2) utilice la compilación ''com.android.support:appcompat-v7:23.2.1'' ya que el error se corrigió allí.
3) para Gradle Plugin 2.0:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
O puede usar Grade Build Tools 1.5.0 ( classpath ''com.android.tools.build:gradle:1.5.0''
)
defaultConfig {
generatedDensities = []
}
// no hay necesidad de esto con Gradle 2.0
aaptOptions {
additionalParameters "--no-version-vectors"
}
Esta es la parte para no usuarios de Gradle:
1) Abra el administrador de SDK.
2) Desinstalado "Android Wear X" (donde X es ARM o Intel) de las API 22 y 23.
3) Seguí teniendo un error de compilación en uno de los estilos de la biblioteca AppCompat. Simplemente los comenté (me arriesgaré a que el dispositivo muy específico no funcione si utiliza ese estilo muy específico).
Después de eso limpié el proyecto y empezó a funcionar.