miércoles, 17 de agosto de 2016

Errores "Unzipping failed" al compilar un proyecto Xamarin.Android

Uno de los errores más comunes que ocurren para quien inicia con Xamarin.Android es durante la primera compilación del proyecto. 

Cuando nosotros compilamos por primera vez se descargan de algunas librerías propias de Android, estas librerías se descargan en .zip y luego son descomprimidas durante el proceso de compilación. Estas librerías se almacenan en "%LOCALAPPDATA%\Xamarin\zips"

En este aspecto Visual Studio no es muy explícito acerca de lo que está haciendo mientras compila y dependiendo de nuestra conexión este proceso puede ser muy tardado, en muchas ocasiones esta lentitud causa que cancelemos el proceso pensando en que Visual Studio ya no está haciendo nada, sin embargo, lo que logramos es que las descargas queden a medias y esos archivos se mantienen dañados en la ruta que mencione hace poco.

En la siguiente compilación obtendremos errores como estos:
Error      2             Unzipping failed. Please download https://dl-ssl.google.com/android/repository/android_m2repository_r22.zip and extract it to the C:\Users\User\AppData\Local\Xamarin\Xamarin.Android.Support.Design\23.0.1.3\content directory.                DemoForms.Droid

Error      3             Reason: C:\Users\User\AppData\Local\Xamarin\zips\96659D653BDE0FAEDB818170891F2BB0.zip is not a valid zip file            DemoForms.Droid

Error      4             Please install package: 'Xamarin.Android.Support.Design' available in SDK installer. Java library file C:\Users\User\AppData\Local\Xamarin\Xamarin.Android.Support.Design\23.0.1.3\embedded\classes.jar doesn't exist.     DemoForms.Droid

Para solucionarlo hay que eliminar de manera manual los archivos dañados y recompilar la solución ahora si esperando a que se descargue todo.

Yo cree un archivo bat que ayuda a automatizar un poco esta tarea, el código es el siguiente.

cd %LOCALAPPDATA%\Xamarin\zips\
del /P *.zip


A este código le estoy indicando que solicite confirmación antes de eliminar.