@Shirayami

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【Unity】ARCoreのビルドがJavaのバージョンが原因でできません。

はじめに

初投稿です。至らない点、分かりにくい点等あると思いますが、回答頂ければ幸いです。

解決したいこと

Unity 2019.4.16で、ARCoreの開発をしています。
こちらの記事を参考に、まずHalloARをAndroidのスマホにBuildしようとしたところ、Unity側でエラーが出て二進も三進も行かない状況になってしまいました。
SDKはこのサイトからarcore-android-sdk-1.40.0.zipをダウンロードしました。
スマホ(Pixel7)は開発者モードにし、USB接続をして、ファイル転送を許可している状況です。

発生している問題・エラー

上記のサイトの通りスマホにapkファイルをRun And Buildしようとすると、デバイスに到達できませんとエラーが出ました。
そのため一旦デスクトップにapkファイルを出力しようとしたところ、このようなエラーが出ました。

Cloud Anchor API key has not been set in this build.
UnityEngine.Debug:Log(Object)
GoogleARCoreInternal.CloudAnchorPreprocessBuild:SetApiKeyOnAndroid() (at Assets/GoogleARCore/SDK/Scripts/Editor/CloudAnchorPreprocessBuild.cs:171)
GoogleARCoreInternal.CloudAnchorPreprocessBuild:PreprocessAndroidBuild() (at Assets/GoogleARCore/SDK/Scripts/Editor/CloudAnchorPreprocessBuild.cs:73)
GoogleARCoreInternal.CloudAnchorPreprocessBuild:OnPreprocessBuild(BuildTarget, String) (at Assets/GoogleARCore/SDK/Scripts/Editor/CloudAnchorPreprocessBuild.cs:52)
GoogleARCoreInternal.PreprocessBuildBase:OnPreprocessBuild(BuildReport) (at Assets/GoogleARCore/SDK/Scripts/Editor/PreprocessBuildBase.cs:52)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
Building "AR Required" app. Use 'Edit > Project Settings > ARCore' to adjust ARCore SDK for Unity settings.
See https://developers.google.com/ar/develop/unity/enable-arcore for more information.
UnityEngine.Debug:LogFormat(String, Object[])
GoogleARCoreInternal.RequiredOptionalPreprocessBuild:OnPreprocessBuild(BuildTarget, String) (at Assets/GoogleARCore/SDK/Scripts/Editor/RequiredOptionalPreprocessBuild.cs:35)
GoogleARCoreInternal.PreprocessBuildBase:OnPreprocessBuild(BuildReport) (at Assets/GoogleARCore/SDK/Scripts/Editor/PreprocessBuildBase.cs:52)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

特にこのエラーが肝な気がしています。

Exception in thread "main" 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 52.0

UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

image.png

CommandInvokationFailure: Failed to update Android SDK package list.
C:\Users\「ユーザー名」\AppData\Local\Android\sdk\cmdline-tools\latest\bin\sdkmanager.bat --list

stderr[
Exception in thread "main" 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 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:359)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:635)
]
stdout[

]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEditor.Android.AndroidSDKTools.RunAndroidSdkTool (System.String toolName, System.String arguments, System.Boolean updateCommand, System.String errorMsg, System.String toolsDir, System.String[] warningsToIgnore) (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEditor.Android.AndroidSDKTools.ListComponentsVersions () (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEditor.Android.SDKManager.UpdatePackagesList () (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEditor.Android.SDKManager.HighestVersionInstalled (UnityEditor.Android.SDKManager+Component tool) (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK+SDKToolsDetector.GetVersion () (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK+SDKComponentDetector.Detect (System.Version minVersion, UnityEditor.Android.PostProcessor.ProgressHandler onProgress) (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK.EnsureSDKComponentVersion (System.Version minVersion, UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK+SDKComponentDetector detector) (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <303ae0e7a8d8441ab049e592bd1e2100>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

Build completed with a result of 'Failed' in 6 seconds (6265 ms)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
UnityEditor.BuildPlayerWindow+BuildMethodException: 16 errors
  at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x002bb] in <7d90b28560b644ce87b8263efcc36eed>:0 
  at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x00080] in <7d90b28560b644ce87b8263efcc36eed>:0 
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

自分で試したこと

Javaのバージョンの問題だと思いGPT4の助けの元、OLACLEのサイトからjdk-8u391-windows-x64.exeをインストールしましたが、解決しません。他のバージョンのJavaもいくつかインストールして試しましたが、うまくいきません。
image.png

PreferencesのExternal Toolを編集すべきというサイトがいくつかありましたが、何が悪いのか分かりません。
画像の通りになっています。
image.png

0 likes

1Answer

Javaのバージョン52.0 は Java8 、 61.0 は Java17 と開きがありますね。

Java8 をインストールされたようですが、その後のエラーも同じバージョン番号が出てきますか?
javac --versionコマンドで、現在のバージョンを確認してください。

1Like

Comments

  1. @Shirayami

    Questioner

    ありがとうございます。
    Javaはバージョン21の最新がコマンドで出てきます。

    その後AndroidAPIのレベルを変えたら該当のエラーは無くなったので、まもなくこの質問は閉じます。

  2. 解決ということであればクローズしてください。

Your answer might help someone💌