El problema
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.
¿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.
Para solucionar el problema 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.
El segundo camino se basa en utilizar Android 6.0 o lo que es lo mismo el API Level 23.
Puedes encontrar más información en este artículo anterior.
El mismo problema en Visual Studio Team Services
Utilizando Visual Studio Team Services para realizar la compilación de un proyecto Xamarin.Android utilizando un servidor Hosted y en el log del proceso de compilación:
C:\Program Files (x86)\Java\jdk1.6.0_45\\bin\javac.exe -J-Dfile.encoding=UTF8 -d obj\Release\android\bin\classes -classpath .... obj\Release\android\src\android\support\design\R.java:10: cannot access java.lang.Object bad class file: java\lang\Object.class(java\lang:Object.class) class file has wrong version 52.0, should be 50.0 Please remove or make sure it appears in the correct subdirectory of the classpath.
Conociendo el problema tenemos dos opciones. Modificar el proyecto para utilizar Android 6.0 o actualizar Java JDK. Al ser un servidor de tipo Hosted no podemos acceder al servidor remotamente y actualizar.
¿Qué podemos hacer?
En las opciones relacionados con el JDK del proceso de Build en VSTS podemos elegir la versión JDK a utilizar.
Tras lanzar de nuevo una build, el problema queda resuelto!
Más información
- Xamarin Releases: TECHNICAL BULLETIN: ANDROID SDK BUILD-TOOLS 24
- Blog de James Montemagno: Fix for Unsupported major.minor version 52.0