Saltar al contenido

Android vectorDrawables.useSupportLibrary = true está deteniendo la aplicación

Hola usuario de nuestra página, encontramos la solución a lo que necesitas, has scroll y la encontrarás a continuación.

Solución:

No se puede utilizar Dibujables vectoriales en cualquier otra vista excepto ImageView en pre piruleta.

Por favor, vea esta SO Respuesta del defensor de desarrolladores de Google.

Para los usuarios de AppCompat, hemos decidido eliminar la funcionalidad que les permite usar elementos de diseño vectoriales de recursos en dispositivos anteriores a Lollipop debido a problemas encontrados en la implementación en la versión 23.2.0/23.2.1 [ https://code.google.com/p/android/issues/detail?id=205236, https://code.google.com/p/android/issues/detail?id=204708 ]. Usando app:srcCompat y setImageResource() continúa trabajando.

Si desea utilizar el Dibujables vectoriales pre-lollipop, el uso puede configurarlo programáticamente convirtiéndolo en un dibujable.

Drawable drawable;

if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.M) 
     drawable = context.getResources().getDrawable(drawableResId, context.getTheme());
 else 
     drawable = VectorDrawableCompat.create(context.getResources(), drawableResId, context.getTheme());


button.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);

Estaba en uno de los proyectos de práctica tratando de aprender tareas y servicios en segundo plano en Android. Cuando saqué su código de muestra, inicialmente no se estaba compilando debido a este error. Así que agregué la siguiente etiqueta en el archivo build.gradle de la aplicación para eliminar el problema de compilación:

android 
    defaultConfig
        vectorDrawables.useSupportLibrary = true
    

Ahora, en el momento en que agregué esta configuración, mi aplicación también comenzó a fallar en Microsoft Android Simulator exactamente como lo describió OP.

Dado que mi enfoque actual era aprender sobre las tareas en segundo plano, quería comenzar a depurar mi aplicación. Entonces, eliminé la configuración anterior nuevamente. Además de eso, también eliminé un attribute nombrada android:fillColor en path etiqueta de uno de mis recursos dibujables (o también puede reemplazar el valor @color/colorAccent con un código hexadecimal como #FF000000). Después de eliminarlo (o cambiarlo con código hexadecimal), mi error de compilación inicial no apareció:




    
    

Después de la eliminación se ve como:




    
    

Mi emulador de MS Android tenía Kitkat (4.4). Mi código fallaba porque mi aplicación intentaba usar elementos de diseño vectorial en una versión anterior a la piruleta de Android, como se menciona en la respuesta aceptada de Vipul.

Para usar VectorDrawableCompat, debe configurar:

android.defaultConfig.vectorDrawables.useSupportLibrary = true

Para usar VectorDrawableCompat, debe realizar dos modificaciones en su proyecto. Primero, configure android.defaultConfig.vectorDrawables.useSupportLibrary = true en su archivo build.gradle, y segundo, use app:srcCompat en lugar de android:src para referirse a elementos de diseño vectoriales.

  1. Ir a tu build.gradle(Módulo: aplicación) y agregue la siguiente línea al bloque de Android. Debería verse así.

    android 
        compileSdkVersion 27
        defaultConfig 
            applicationId "..."
            minSdkVersion 15
            targetSdkVersion 27
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
            vectorDrawables.useSupportLibrary = true // <------
        
        buildTypes 
            release 
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            
        
    
    
  2. Referirse a la fuente como srcCompat para permitir que su aplicación utilice gráficos vectoriales.

    app:srcCompat="@dibujable/avión"

Comentarios y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *