[Tips and Tricks] Corregir «Xcode license must be accepted in order to be connected…»

El problema

Tras actualizar XCode a una versión posterior y desde entonces al intentar conectar desde Windows utilizando Xamarin Mac Agent…

Oops!

El mensaje de error nos lo deja todo muy claro, debemos abrir XCode y aceptar la neuva licencia. Sin embargo, tras abrir XCode, nunca salta la ventana para poder aceptar la licencia.

¿Qué ocurre?, ¿qué podemos hacer?.

La solución

Encontramos una sencilla solución al poder aceptar la licencia de XCode utilizando la línea de comandos.

Abre XCode y dirígete a Preferences > Locations. Asegúrate de tener establecida a la última versión de XCode la opción Command Line Tools:

Command Line Tools

Todo preparado. Abre una línea de comandos y ejecuta:

sudo xcodebuild -license

Acepta la licencia (agree), vuelve a Visual Studio en Windows e intenta de nuevo establecer una conexión. Todo debería funcionar sin problemas.

Más información

[Tips and Tricks] Correción errores compilación Xamarin.Androd

AndroidIntroducción

Gracias a poder participar en múltiples talleres relacionados con el desarrollo Xamarin y principalmente, a los cursos Xamarin que tengo disponible en CampusMVP tengo la posibilidad de interactuar con una gran cantidad de desarrolladores que utilizan Xamarin. Esto me ha permitido conocer las principales dudas y los principales problemas a los que se enfrentan.

En el artículo de hoy, vamos a centrarnos en un error relacionado con la compilación Android dado en mayor medida tras actualizar el paquete de Xamarin.Forms o uno de los implicados con Xamarin.Android.

El problema

Tras actualizar el paquete de Xamarin.Forms o alguno de los implicados con Xamarin.Android obtenemos el siguiente error:

Please install package: 'Xamarin.Android.Support.v4' available in SDK installer. Java library file ...\AppData\Local\Xamarin\Xamarin.Android.Support.v4\23.3.0.0\content\libs/internal_impl-23.3.0.jar doesn't exist.	

También puede ser:

error APT0000: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.

Xamarin descarga paquetes relacionados con el SDK de Android en la ruta %UserProfile%\AppData\Local\Xamarin\zips tras la restauración de paquetes. Dependiendo de varios factores como la conexión a internet, el tiempo de respuesta puede verse afectado. La implicación es el «congelado» del proceso de compilación en Visual Studio. Puedes creer que no esta sucediendo nada o bien, que algún error ha ocurrido. Ante esta situación, si se cancela la compilación o se cierra Visual Studio, todo puede quedar un estado indeterminado.

La solución

Lo primero que se suele intentar es limpiar y recompilar el proyecto. No funciona. Nos ponemos «más serios» y limpiamos la carpeta packages, bin y obj. Tampoco es suficiente.

Debemos de volver a permitir realizar la descarga de los paquetes relacionados con el SDK Android desde cero. Para ello:

  1. Cerrar Visual Studio.
  2. Acceder a la carpeta del proyecto, limpiar la carpeta packages.
  3. Limpiar todos los paquetes de Xamarin.Android disponibles en la cache de NuGet disponible en la ruta %UserProfile%\.nuget\packages\Xamarin.Android.*.
  4. Limpiar todos los paquetes de Xamarin.Android disponibles en la cache de Xamarin disponible en la ruta %UserProfile%\.nuget\packages\Xamarin.Android.*.
  5. ¿Recuerdas la ruta donde se descargaban los paquetes relacionados con el SDK de Android?. Limpiar las descargas no completadas de la ruta %UserProfile%\AppData\Local\Xamarin\zips.

Tras el proceso anterior, recompilar y esperar (es importante, paciencia!). Todo correcto de nuevo.

Más información

[Tips and Tricks] Corrección al error «Unsupported major.minor version 52.0»

androidEl error

Lleno de ilusión, descargas e instalas Xamarin y te dispones a crear tu primera aplicación móvil multiplataforma nativa con C#. Seleccionas el proyecto Android como proyecto de arranque, un simulador y compilas. Si tras breves segundos no ves tu aplicación en ejecución, quizás estas dentro del porcentaje reducido de desarrolladores que obtienen el siguiente error:

Unsupported major.minor version 52.0
Unsupported major.minor version 52.0

¿Qué ocurre?

Probablemente has instalado múltiples SDKs de Android utilizando Android SDK Manager. Xamarin Android intenta utilizar las últimas «Android Build-Tools» aún no compatibles.

La solución

Tenemos dos caminos posibles.

El primero de ellos se basa en actualizar Java JDK y asegurar su uso. La versión 52.0 referenciada en el error se refiere al JDK, en concreto a la versión 8. Xamarin Android 7.0 requiere el JDK 1.8 para usar las APIs de Android Nougat (API Level 24). Es necesaria además una versión de 64 bits para poder usar controles personales en el editor Android entre otras acciones.

Descargamos la versión correspondiente del JDK en este enlace.

Tras descargar e instalar, debemos asegurar que se utiliza la versión instalada. Para ello:

  • Visual Studio: Tools > Options > Xamarin > Android Settings > Java Development Kit Location.
  • Xamarin Studio (en Mac): Xamarin Studio > Preferences > Projects > SDK Locations > Android > Java SDK (JDK).

El segundo camino se basa en utilizar Android 6.0 o lo que es lo mismo el API Level 23. Abrimos Android SDK Manager:

Abrimos Android SDK Manager
Abrimos Android SDK Manager

Debemos desinstalar:

  • Android SDK Build-tools 24.0.x.

Y tener instalado:

  • Android SDK Build-tools 23.0.x.
  • SDK Platform 23.
Android SDK Manager
Android SDK Manager

Más información

[Tips and Tricks] Corregir error «could not connect to the debugger» utilizando Visual Studio Android Emulator

device-tablet-wfEl problema

Estas desarrollando una aplicación nativa multiplataforma con Xamarin con soporte a Android, te disponibles a lanzar y depurar la misma en el emulador Android incluido con Visual Studio y…

No se puede depurar!
No se puede depurar!

La aplicación realiza el despliegue e incluso arranca en el emulador, pero se detiene inmediatamente sin permitir depurar. Obtenemos el mensaje:

Could not connect to the debugger.

¿Cómo solucionamos el problema?

La solución

El error radica en incompatibilidades entre el procesador que hace de host y la máquina virtual Hyper-V.

En Windows 10, pulsamos el botón de inicio y escribimos MMC. A continuación, pulsamos la opción Hyper-V Manager:

Hyper-V Manager
Hyper-V Manager

En la herramienta de gestión de máquinas Hyper-V (emuladores) seleccionamos la que queremos usar y hacemos clic derecho, Settings.

Virtual Machines
Virtual Machines

En la ventana de configuración de la máquina, vamos a la sección Compatibility y habilitamos Migrate to a physical computer with a different processor version:

Configuración de compatibilidad
Configuración de compatibilidad

Si ejecutamos de nuevo la aplicación depurando desde Visual Studio, todo debe funcionar como se espera.

Más información

[Tips and Tricks] «Error MT0091: This version of Xamarin.iOS requires the iOS 10.0 SDK (shipped with Xcode 8.0) when the managed linker is disabled»

i-phoneEl problema

Desarrollando una aplicación con Xamarin para iOS, acabas de actualizar recientemente (Cycle 8) y al intentar compilar y desplegar el proyecto te encuentras con el siguiente error:

Error MT0091
Error MT0091

¿Qué ocurre?

La solución

El problema viene dado por tener la última versión de Xamarin.iOS ya preparada para iOS 10.0  y no tener XCode actualizado a la última versión. Xamarin.iOS 10 incluye los simbolos de XCode 8.

Tenemos dos soluciones.

  • La primera de ellas es sencilla, actualizar XCode a la versión 8.0.
  • La segunda opción es indicar al Linker que no utilice estos simbolos para permitir la compilación contra versiones anteriores de XCode (como es tu caso). Debes dirigirte a las propiedades del proyecto (clic derecho), pestaña Build, iOS Build y acceder a la opción Linker Behavior. Debes seleccionar la opción Link Framework SDKs only.

Más información