Xamarin.Android and Java Development Kit 9 or later

This article explains how to resolve Java Development Kit (JDK) 9 or later errors in Xamarin.Android.

Overview

Xamarin.Android uses the Java Development Kit (JDK) to integrate with the Android SDK for building Android apps and running the Android designer. The latest versions of the Android SDK (API 24 and higher) require JDK 8 (1.8) or the Microsoft Mobile OpenJDK Preview. Because the Android SDK tools available from Google are not yet compatible with JDK 9, Xamarin.Android does not work with JDK 9 or later.

Note

To target Android API 31, you need to install JDK 11. Learn more about JDK 11 impacts to Visual Studio here.

JDK Errors

If you try to build a Xamarin.Android project with a version of the JDK later than JDK 8, you will get an explicit error indicating that this version of JDK is not supported. For example:

Building with JDK Version `9.0.4` is not supported. Please install JDK version `1.8.0`. See https://aka.ms/xamarin/jdk9-errors

To resolve these errors, you must install JDK 8 (1.8) as explained in How do I update the Java Development Kit (JDK) version?. Alternately, you can install the Microsoft Mobile OpenJDK Preview The Microsoft Mobile OpenJDK will eventually replace JDK 8 for Xamarin.Android development.

Checking the JDK Version

You can check to see which version of Java you have installed by entering the following command (the JDK bin directory must be in your PATH):

java -version

If JDK 9 installed, you will see a message like the following:

java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

If JDK 9 or later is installed, you must install Java JDK 8 (1.8) or the Microsoft Mobile OpenJDK Preview. For information about how to install JDK 8, see How do I update the Java Development Kit (JDK) version?. For information about how to install the Microsoft Mobile OpenJDK, see Microsoft Mobile OpenJDK Preview.

Note that you do not have to uninstall a later version of the JDK; however, you must ensure that Xamarin is using JDK 8 rather than a later JDK version. In Visual Studio, click Tools > Options > Xamarin > Android Settings. If Java Development Kit Location is not set to a JDK 8 location (such as C:\Program Files\Java\jdk1.8.0_111), click Change and set it to the location where JDK 8 is installed. In Visual Studio for Mac, navigate to Preferences > Projects > SDK Locations > Android > Java SDK (JDK) and click Browse to update this path.

Known Issues with JDK 9

apksigner

There is a known issue with apksigner and JDK 9 in which the apksigner.bat file invokes the apksigner.jar with -Djava.ext.dirs instead of -classpath which JDK 9 expects. It is recommended to use JDK 8 (1.8). For information about how to install JDK 8, see How do I update the Java Development Kit (JDK) version?

If you have installed JDK 9, ensure that the following path is not set on your PATH environment variable as it will still point to JDK 9: C:\ProgramData\Oracle\Java\javapath. After removing it, java-version at a command line should show JDK 8.