123456789101112131415161718192021222324252627282930313233343536373839 |
- 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
- {
- /// <summary>
- /// 按照必要的顺序,执行所有生成操作,适合打包前操作
- /// </summary>
- [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, EditorUserBuildSettings.development);
- Il2CppDefGeneratorCommand.GenerateIl2CppDef();
- // 这几个生成依赖HotUpdateDlls
- LinkGeneratorCommand.GenerateLinkXml(target);
- // 生成裁剪后的aot dll
- StripAOTDllCommand.GenerateStripedAOTDlls(target);
- // 桥接函数生成依赖于AOT dll,必须保证已经build过,生成AOT dll
- MethodBridgeGeneratorCommand.GenerateMethodBridgeAndReversePInvokeWrapper(target);
- AOTReferenceGeneratorCommand.GenerateAOTGenericReference(target);
- }
- }
- }
|