domingo, 25 de diciembre de 2016

Error inflating class android.support.v7.widget.Toolbar (Xamarin.Forms 2.3.3.175)

El día de hoy (25/12/2016) actualice a la última versión de Xamarin (4.2.2.6) disponible en el canal estable en Visual Studio. Después de esto al crear un proyecto de Xamarin.Forms (2.3.3.175) al querer ejecutar en Android obtuve el siguiente error cuando la app inicio.

Android.Views.InflateException: Binary XML file line #1: Error inflating class android.support.v7.widget.Toolbar


La forma resumida es:
  • Reinstalar la última versión de Xamarin.Forms para que se instalen las dependencias faltantes
  • Limpiar el proyecto
  • Reconstruir el proyecto

Si quieren ver paso a paso y revisar los paquetes que deben estar instalados a continuación pongo paso a paso cómo hacer la corrección.


Después de realizar varias pruebas para tratar de resolver el error, encontré que resolverlo es realmente muy fácil.

Por defecto el proyecto de Android viene con estos paquetes NuGet con las siguientes versiones:


Lo siguiente es seleccionar el paquete de Xamarin.Forms y seleccionar la opción "Update", si revisamos bien estaremos regresando a una versión anterior


Esto no va a llevar a tener los siguientes paquetes y versiones instalados.


Ahora volvemos a realizar lo mismo, seleccionamos el paquete de Xamarin.Forms y seleccionamos Update para volver a la última versión estable.


Después de actualizar el proyecto quedara con estos NuGet:

Antes de finalizar tenemos que hacer una limpieza del proyecto o "Clean" y después lo reconstruimos (Rebuild) 
*En mi caso hacer la reconstrucción fue fundamental para que se restauraran los NuGet de manera correcta, no fue suficiente solo con el Clean y después ejecutar normalmente.

Y finalmente ya podemos ejecutar el proyecto el cual debería funcionar correctamente


Yo decidí utilizar este método en lugar de instalar uno por uno los paquetes faltantes debido a dos razones. La primera es que desinstalar todos los paquetes instalados puede ser molesto debido a que algunos dependen de otros y hay que ir buscando en qué orden se pueden desinstalar.  La segunda razón es que al dejar que el paquete se actualice desde la herramienta nos da la oportunidad de que este en automatico descargue todas las dependencias que requiere y nos evita revisar cuales son todas ellas de manera manual.