Comment mettre à jour le SDK Android intégré dans Unity ?

Unity intègre par défaut le SDK Android pour faciliter les builds. Il arrive cependant que le SDK installé ne contienne pas tous les SDKs nécessaires. Dans certains cas Unity vous propose d’installer le SDK manquant, mais dans la plupart des cas, il faudra le faire par vous même.

Android SDK does not include your Target SDK of 32.
Please use the Android SDK Manager to install your target SDK version. Restart Unity after SDK installation for the changes to take effect.

Si vous avez ce message, vous devez donc soit utiliser le SDK d’Android Studio, soit faire la mise à jour manuellement. Le SDK d’Android Studio a par contre un problème de compatibilité sur les versions récentes d’Unity (2023.x), et vous risquez d’avoir le message d’erreur suivant en build :

stderr[
Erreur : LinkageError lors du chargement de la classe principale com.android.sdklib.tool.sdkmanager.SdkManagerCli
	java.lang.UnsupportedClassVersionError: com/android/sdklib/tool/sdkmanager/SdkManagerCli has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
]

Pire encore, si vous tentez de mettre à jour le SDK manuellement via la command sdkmanager « platform-tools » « platforms;android-32 », vous aurez probablement l’erreur suivante :

PS D:\Devel\Unity\2023.1.16f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\tools\bin> .\sdkmanager.bat

ERROR: JAVA_HOME is set to an invalid directory: D:\Devel\Unity\2023.1.14f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

La solution

La solution est multiple, j’ai trouvé un petit script sur le forum Unity que je vous partage plus bas, mais il faudra aussi vous assurer d’avoir une version de java 8. Pour cela j’ai utilisé la version openjdk 8 32bit.

Le script suivant fonctionne comme suis :

  • d: le lecteur qui contient les installations d’Unity
  • JAVA_HOME le chemin vers le SDK Java (ici OpenJDK 8)
  • work_dir le dossier qui contient toutes les installations d’Unity
d:
set JAVA_HOME=D:\Devel\Android\openjdk-jre-8u382
set work_dir="D:\Devel\Unity"
for /D %%B in (%work_dir%\*) do (
 
set ANDROID_HOME=%%B\Editor\Data\PlaybackEngines\AndroidPlayer\
cd %%B\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\tools\bin\
echo.> %USERPROFILE%\.android\repositories.cfg
 
cmd /C sdkmanager --update
cmd /C sdkmanager "platform-tools" "platforms;android-29"
cmd /C sdkmanager "platform-tools" "platforms;android-30"
cmd /C sdkmanager "platform-tools" "platforms;android-31"
cmd /C sdkmanager "platform-tools" "platforms;android-32"
cmd /C sdkmanager "platform-tools" "platforms;android-33"
cmd /C sdkmanager "platform-tools" "platforms;android-34"
)
pause

Ce script vous demandera d’accepter les conditions d’utilisation du SDK et installera les versions 29 à 34 !