using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEditor; using UnityEditor.Build; namespace HybridCLR.Editor.Commands { public static class PrebuildCommand { /// /// 按照必要的顺序,执行所有生成操作,适合打包前操作 /// [MenuItem("HybridCLR/Generate/All", priority = 200)] public static void GenerateAll() { var installer = new Installer.InstallerController(); if (!installer.HasInstalledHybridCLR()) { throw new BuildFailedException($"You have not initialized HybridCLR, please install it via menu 'HybridCLR/Installer'"); } BuildTarget target = EditorUserBuildSettings.activeBuildTarget; CompileDllCommand.CompileDll(target); Il2CppDefGeneratorCommand.GenerateIl2CppDef(); // 这几个生成依赖HotUpdateDlls LinkGeneratorCommand.GenerateLinkXml(target); // 生成裁剪后的aot dll StripAOTDllCommand.GenerateStripedAOTDlls(target); // 桥接函数生成依赖于AOT dll,必须保证已经build过,生成AOT dll MethodBridgeGeneratorCommand.GenerateMethodBridgeAndReversePInvokeWrapper(target); AOTReferenceGeneratorCommand.GenerateAOTGenericReference(target); } } }