using System; using System.Collections.Generic; using System.IO; using System.Linq; using AlicizaX.Editor; using AlicizaX.Runtime; using UnityEditor; using UnityEngine; public static class AppBuildHelper { private const string _entryScene = "Assets/Scenes/Main.unity"; private const string AppBuilderSettingPath = "Assets/Resources/AppBuilderSetting.bytes"; public static void BuildApplication(AppBuildParameter appBuildParameter) { if (!Directory.Exists(appBuildParameter.outPutPath)) { Directory.CreateDirectory(appBuildParameter.outPutPath); } Debug.Log("Starting build application"); AppBuilderSetting appBuilderSetting = new AppBuilderSetting(); appBuilderSetting.Language = appBuildParameter.language; appBuilderSetting.DebugMode = appBuildParameter.developBuild; appBuilderSetting.ResMode = appBuildParameter.resMode; File.WriteAllText(AppBuilderSettingPath, Utility.Json.ToJson(appBuilderSetting)); Debug.Log("Generate AppBuilderSetting.bytes"); SyncAssemblyContent.GenerateAssemblyLoadData(); try { var options = new BuildPlayerOptions { scenes = new[] { _entryScene }, locationPathName = Path.Combine(appBuildParameter.outPutPath, appBuildParameter.fileName), target = appBuildParameter.buildTarget, options = appBuildParameter.developBuild ? BuildOptions.Development : BuildOptions.None }; var report = BuildPipeline.BuildPlayer(options); HandleBuildReport(report); } catch (Exception e) { Debug.Log($"构建过程中发生异常: {e.Message}"); } } private static void HandleBuildReport(UnityEditor.Build.Reporting.BuildReport report) { if (report.summary.result == UnityEditor.Build.Reporting.BuildResult.Succeeded) { Debug.Log($"整包构建完成:${report.summary.outputPath}"); } else { Debug.Log($"错误信息: {report.SummarizeErrors()}"); } } }