private static int BuildPlayer(BuildEnvsOptions buildOptions, bool revealInFinder = false)
        {
            BuildPipelineCommonTools.FileUtils.CheckDir(Path.GetDirectoryName(buildOptions.locationPathName));
#if UNITY_2018_1_OR_NEWER
            UnityEditor.Build.Reporting.BuildReport  report  = BuildPipeline.BuildPlayer(buildOptions.GetBuildPlayerOptions());
            UnityEditor.Build.Reporting.BuildSummary summary = report.summary;
            string errorMessage   = string.Join("\n", report.steps.SelectMany(s => s.messages).Where(m => m.type == LogType.Error).Select(m => m.content).ToArray());
            bool   buildSucceeded = (summary.result == UnityEditor.Build.Reporting.BuildResult.Succeeded);
#else
            string errorMessage   = BuildPipeline.BuildPlayer(buildOptions.scenes, buildOptions.locationPathName, buildOptions.target, buildOptions.options);
            bool   buildSucceeded = !string.IsNullOrEmpty(errorMessage);
#endif

            UnityEngine.Debug.ClearDeveloperConsole();
            BuildPipelineExecutor.DefaultBuildEnvsOptions.DeletePackagingCacheFolders();
            if (buildSucceeded)
            {
                if (revealInFinder)
                {
                    EditorUtility.RevealInFinder(buildOptions.locationPathName);
                }
#if UNITY_2018_1_OR_NEWER
                Debug.Log("Build completed successfully for {0}: {1} mb and took {2} seconds with {3} error(s). Location: {4}",
                          summary.platform.ToString(),
                          (summary.totalSize / 1024 / 1024).ToString("N2"),
                          summary.totalTime.Seconds,
                          summary.totalErrors,
                          summary.outputPath
                          );
#else
                Debug.Log(string.Format("Build completed successfully for {0} to {1}", buildPlayerOptions.target, buildPlayerOptions.locationPathName));
#endif
                return(0);
            }
            else
            {
                Debug.LogError("Build failed with errors \n" + errorMessage);
                //throw new BuildFailedException("Build failed with errors \n" + errorMessage);
                return(1);
            }
        }