PrebuildCommand.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using UnityEditor;
  7. using UnityEditor.Build;
  8. namespace HybridCLR.Editor.Commands
  9. {
  10. public static class PrebuildCommand
  11. {
  12. /// <summary>
  13. /// 按照必要的顺序,执行所有生成操作,适合打包前操作
  14. /// </summary>
  15. [MenuItem("HybridCLR/Generate/All", priority = 200)]
  16. public static void GenerateAll()
  17. {
  18. var installer = new Installer.InstallerController();
  19. if (!installer.HasInstalledHybridCLR())
  20. {
  21. throw new BuildFailedException($"You have not initialized HybridCLR, please install it via menu 'HybridCLR/Installer'");
  22. }
  23. BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
  24. CompileDllCommand.CompileDll(target, EditorUserBuildSettings.development);
  25. Il2CppDefGeneratorCommand.GenerateIl2CppDef();
  26. // 这几个生成依赖HotUpdateDlls
  27. LinkGeneratorCommand.GenerateLinkXml(target);
  28. // 生成裁剪后的aot dll
  29. StripAOTDllCommand.GenerateStripedAOTDlls(target);
  30. // 桥接函数生成依赖于AOT dll,必须保证已经build过,生成AOT dll
  31. MethodBridgeGeneratorCommand.GenerateMethodBridgeAndReversePInvokeWrapper(target);
  32. AOTReferenceGeneratorCommand.GenerateAOTGenericReference(target);
  33. }
  34. }
  35. }