Android build: ERROR: JAVA_HOME is set to an invalid directory
Hi, first of all: thank you so much for this project. It saves us a lot of our time.
Error description
We run our private gitlab instance and runner and basically out pipeline should run tests and make an android build. The tests run fine but I don't get the build to work (see Error log).
We use unity version 2018.4.14
According to https://gitlab.com/gableroux/unity3d/-/blob/a57c2995/ci-generator/unity_versions.old.yml
Build tools version 28 should be installed, what is exactly our configured target API level
2018.4.14f1:
# skip_prepare_stage: true
# build_only_these_platforms: android
# base_image: gableroux/unity3d:2018.4.14f1
build: f1
dockerfile_name: unitysetup
download_url: https://beta.unity3d.com/download/05119b33d0b7/UnitySetup-2018.4.14f1
release_notes: https://unity3d.com/unity/whats-new/2018.4.14f1
release_url: https://beta.unity3d.com/download/05119b33d0b7/public_download.html
sha1: c107d695be5e898d35c61ce90dc46a300245736e
underscore: 2018_4_14f1
version: 2018.4.14
variables:
android:
ANDROID_NDK: "http://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip"
ANDROID_SDK_BUILDTOOLS: "http://dl.google.com/android/repository/build-tools_r28-linux.zip"
ANDROID_SDK_PLATFORM: "http://dl.google.com/android/repository/platform-28_r06.zip"
ANDROID_SDK_PLATFORMTOOLS: "http://dl.google.com/android/repository/platform-tools_r28.0.3-linux.zip"
ANDROID_SDK_SDKTOOLS: "http://dl.google.com/android/repository/sdk-tools-linux-4333796.zip"
Error log
[0KRunning with gitlab-runner 13.1.1 (6fbc7474)
[0;msection_start:1595253445:prepare_executor
[0K[0K[36;1mPreparing the "docker" executor[0;m
[0;m[0KUsing Docker executor with image gableroux/unity3d:2018.4.14f1-android ...
[0;m[0KUsing locally found image version due to if-not-present pull policy
[0;m[0KUsing docker image sha256:2792db1f086b81fe55fb0db9f14dc1be0aeb2ce3ae0fe163a620f92a103ae127 for gableroux/unity3d:2018.4.14f1-android ...
...
Refreshing native plugins compatible for Editor in 6.16 ms, found 3 plugins.
Preloading 1 native plugins for Editor in 0.13 ms.
DisplayProgressbar: Checking prerequisites
Android PostProcess task "Checking prerequisites" took 3.356 ms
DisplayProgressbar: Detect Java Development Kit (JDK)
Android PostProcess task "Detect Java Development Kit (JDK)" took 3.6276 ms
DisplayProgressbar: Detecting Android SDK
Uploading Crash Report
Win32Exception: ApplicationName='/opt/Unity/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/OpenJDK/Linux/bin/java', CommandLine='-Xmx4096M -Dcom.android.sdkmanager.toolsdir="/opt/android/sdk/tools" -Dfile.encoding=UTF8 -jar "/opt/Unity/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/sdktools.jar" -', CurrentDirectory='/builds/season/season20/frontend'
at System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process) [0x00000] in <filename unknown>:0
at System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process) [0x00000] in <filename unknown>:0
at System.Diagnostics.Process.Start () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()
at UnityEditor.Utils.Program.Start (System.EventHandler exitCallback) [0x0006b] in /home/builduser/buildslave/unity/build/Editor/Mono/Utils/Program.cs:44
at UnityEditor.Utils.Program.Start () [0x00003] in /home/builduser/buildslave/unity/build/Editor/Mono/Utils/Program.cs:28
at UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) [0x00000] in <filename unknown>:0
at UnityEditor.Android.Command.Run (System.String command, System.String args, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, System.String errorMsg) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools.RunCommand (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, System.String workingdir, System.String errorMsg, Int32 memoryMB) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools.GetSDKBuildToolsDir (UnityEditor.Android.AndroidJavaTools javaTools) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools.UpdateToolsDirectories (UnityEditor.Android.AndroidJavaTools javaTools) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools..ctor (System.String sdkRoot, UnityEditor.Android.AndroidJavaTools javaTools) [0x00000] in <filename unknown>:0
UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object)
UnityEngine.DebugLogHandler:LogException(Exception, Object)
UnityEngine.Logger:LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
UnityEditor.Android.AndroidSDKTools:.ctor(String, AndroidJavaTools)
UnityEditor.Android.AndroidSDKTools:GetInstance(AndroidJavaTools, Boolean)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK:Execute(PostProcessorContext)
UnityEditor.Android.PostProcessor.PostProcessRunner:RunAllTasks(PostProcessorContext)
UnityEditor.Android.PostProcessAndroidPlayer:PrepareForBuild(BuildOptions, BuildTarget)
UnityEditor.Android.AndroidBuildPostprocessor:PrepareForBuild(BuildOptions, BuildTarget)
UnityEditor.PostprocessBuildPlayer:PrepareForBuild(BuildOptions, BuildTargetGroup, BuildTarget) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:106)
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, Boolean)
UnityEditor.BuildPipeline:BuildPlayerInternal(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:358)
UnityEditor.BuildPipeline:BuildPlayer(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:257)
UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:240)
UnityEditor.BuildPipeline:BuildPlayer(String[], String, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:235)
BuildCommand:PerformBuild() (at Assets/Scripts/Editor/BuildCommand.cs:189)
(Filename: /home/builduser/buildslave/unity/build/Editor/Mono/Utils/Program.cs Line: 44)
Unable to list target platforms. Please make sure the android sdk path is correct.
UnityEditor.Android.CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct.
/opt/android/sdk/tools/bin/avdmanager list target -c
stderr[
]
stdout[
ERROR: JAVA_HOME is set to an invalid directory: /opt/Unity/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/OpenJDK/Linux
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
]
exit code: 1
at UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) [0x00000] in <filename unknown>:0
at UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools.RunAndroidSdkTool (System.String toolName, System.String arguments, Boolean updateCommand, System.String errorMsg, System.String toolsDir) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools.RunAndroidSdkTool (System.String toolName, System.String arguments, Boolean updateCommand, System.String errorMsg) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools.ListTargetPlatforms (UnityEditor.Android.AndroidJavaTools javaTools) [0x00000] in <filename unknown>:0
UnityEngine.DebugLogHandler:Internal_Log(LogType, String, Object)
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:Log(Object)
UnityEditor.Android.AndroidSDKTools:ListTargetPlatforms(AndroidJavaTools)
UnityEditor.Android.AndroidSDKTools:GetTopAndroidPlatformAvailable(AndroidJavaTools)
UnityEditor.Android.PostProcessor.Tasks.SDKPlatformDetector:GetVersion(AndroidSDKTools, AndroidJavaTools)
UnityEditor.Android.PostProcessor.Tasks.SDKComponentDetector:Detect(AndroidSDKTools, AndroidJavaTools, Version, ProgressHandler)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK:EnsureSDKComponentVersion(AndroidJavaTools, Version, SDKComponentDetector)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK:EnsureSDKComponentVersion(AndroidJavaTools, Int32, SDKComponentDetector)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK:Execute(PostProcessorContext)
UnityEditor.Android.PostProcessor.PostProcessRunner:RunAllTasks(PostProcessorContext)
UnityEditor.Android.PostProcessAndroidPlayer:PrepareForBuild(BuildOptions, BuildTarget)
UnityEditor.Android.AndroidBuildPostprocessor:PrepareForBuild(BuildOptions, BuildTarget)
UnityEditor.PostprocessBuildPlayer:PrepareForBuild(BuildOptions, BuildTargetGroup, BuildTarget) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:106)
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, Boolean)
UnityEditor.BuildPipeline:BuildPlayerInternal(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:358)
UnityEditor.BuildPipeline:BuildPlayer(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:257)
UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:240)
UnityEditor.BuildPipeline:BuildPlayer(String[], String, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:235)
BuildCommand:PerformBuild() (at Assets/Scripts/Editor/BuildCommand.cs:189)
(Filename: /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs Line: 106)
Detected outdated SDK Platform version 0.0.0 when the min version is 28.0.0
Uploading Crash Report
CommandInvokationFailure: Unable to install additional SDK platform. Please run the SDK Manager manually to make sure you have the latest set of tools and the required platforms installed.
/opt/android/sdk/tools/bin/sdkmanager "platforms;android-28"
stderr[
]
stdout[
ERROR: JAVA_HOME is set to an invalid directory: /opt/Unity/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/OpenJDK/Linux
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
]
exit code: 1
at UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) [0x00000] in <filename unknown>:0
at UnityEditor.Android.Command.RunWithStdin (System.Diagnostics.ProcessStartInfo psi, System.String errorMsg, IEnumerable`1 input) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools.RunAndroidSdkTool (System.String toolName, System.String arguments, Boolean updateCommand, System.String errorMsg, System.String toolsDir) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools.RunAndroidSdkTool (System.String toolName, System.String arguments, Boolean updateCommand, System.String errorMsg) [0x00000] in <filename unknown>:0
at UnityEditor.Android.AndroidSDKTools.InstallPlatform (UnityEditor.Android.AndroidJavaTools javaTools, Int32 apiLevel) [0x00000] in <filename unknown>:0
at UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK+SDKPlatformDetector.Update (UnityEditor.Android.AndroidSDKTools sdkTools, UnityEditor.Android.AndroidJavaTools javaTools, System.Version minVersion, UnityEditor.Android.PostProcessor.ProgressHandler onProgress) [0x00000] in <filename unknown>:0
at UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK.EnsureSDKComponentVersion (UnityEditor.Android.AndroidJavaTools javaTools, System.Version minVersion, UnityEditor.Android.PostProcessor.Tasks.SDKComponentDetector detector) [0x00000] in <filename unknown>:0
at UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK.EnsureSDKComponentVersion (UnityEditor.Android.AndroidJavaTools javaTools, Int32 minVersion, UnityEditor.Android.PostProcessor.Tasks.SDKComponentDetector detector) [0x00000] in <filename unknown>:0
at UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) [0x00000] in <filename unknown>:0
at UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) [0x00000] in <filename unknown>:0
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, Boolean)
UnityEditor.BuildPipeline:BuildPlayerInternal(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:358)
UnityEditor.BuildPipeline:BuildPlayer(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:257)
UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:240)
UnityEditor.BuildPipeline:BuildPlayer(String[], String, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:235)
BuildCommand:PerformBuild() (at Assets/Scripts/Editor/BuildCommand.cs:189)
(Filename: Assets/Scripts/Editor/BuildCommand.cs Line: 189)
DisplayProgressbar:
Unloading 483 Unused Serialized files (Serialized files now loaded: 0)
System memory in use before: 101.9 MB.
System memory in use after: 101.1 MB.
Unloading 476 unused Assets to reduce memory usage. Loaded Objects now: 5943.
Total: 13.652000 ms (FindLiveObjects: 1.338000 ms CreateObjectMapping: 0.425000 ms MarkObjects: 8.084000 ms DeleteObjects: 3.803000 ms)
Load scene 'Temp/__Backupscenes/0.backup' time: 0.827000 ms
Unloading 0 Unused Serialized files (Serialized files now loaded: 0)
System memory in use before: 93.3 MB.
System memory in use after: 93.8 MB.
Unloading 0 unused Assets to reduce memory usage. Loaded Objects now: 5923.
Total: 7.833000 ms (FindLiveObjects: 1.252000 ms CreateObjectMapping: 0.296000 ms MarkObjects: 6.262000 ms DeleteObjects: 0.021000 ms)
Uploading Crash Report
Exception: Build ended with Failed status
at BuildCommand.PerformBuild () [0x00091] in /builds/season/season20/frontend/Assets/Scripts/Editor/BuildCommand.cs:192
(Filename: Assets/Scripts/Editor/BuildCommand.cs Line: 192)
executeMethod method BuildCommand.PerformBuild threw exception.
(Filename: /home/builduser/buildslave/unity/build/Runtime/Utilities/Argv.cpp Line: 356)
nity/build/Editor/Platform/Linux/TempStubs.cpp:PlatformImageForIconForExtension
/home/builduser/buildslave/unity/build/Editor/Platform/Linux/UsbDevices.cpp:UsbDevicesQuery
/home/builduser/buildslave/unity/build/Editor/Platform/Linux/TempStubs.cpp:PlatformImageForIconForExtension
Aborting batchmode due to failure:
executeMethod method BuildCommand.PerformBuild threw exception.
[Unity Package Manager (Upm)]
Parent process [257] was terminated
section_end:1595254477:step_script
[0K[31;1mERROR: Job failed: exit code 1
[0;m
Technical details
-
Is this failing with shared runners or are you using your own runners? Our own runner
-
What is you CI configuration (is it different from example project)? Yes, we added steps to setup private git submodules
-
Did you try with the Example project before trying with your own? Yes, it worked
-
Did you try running the build locally from command line? No
-
Did it work previously with a different version? No
-
Are you using
Assets/Scripts/Editor/BuildCommand.csexactly as is from the repo? I needed to port it .net3.5