| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | 
							- using HybridCLR.Editor.BuildProcessors;
 
- using HybridCLR.Editor.Installer;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.IO;
 
- using System.Linq;
 
- using System.Reflection;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using UnityEditor;
 
- using UnityEngine;
 
- using static UnityEngine.Networking.UnityWebRequest;
 
- namespace HybridCLR.Editor.Commands
 
- {
 
-     public static class StripAOTDllCommand
 
-     {
 
-         [MenuItem("HybridCLR/Generate/AOTDlls", priority = 105)]
 
-         public static void GenerateStripedAOTDlls()
 
-         {
 
-             GenerateStripedAOTDlls(EditorUserBuildSettings.activeBuildTarget);
 
-         }
 
-         static BuildOptions GetBuildPlayerOptions(BuildTarget buildTarget)
 
-         {
 
-             BuildOptions options = BuildOptions.None;
 
-             bool development = EditorUserBuildSettings.development;
 
-             if (development)
 
-             {
 
-                 options |= BuildOptions.Development;
 
-             }
 
-             if (EditorUserBuildSettings.allowDebugging && development)
 
-             {
 
-                 options |= BuildOptions.AllowDebugging;
 
-             }
 
-             if (EditorUserBuildSettings.connectProfiler && (development || buildTarget == BuildTarget.WSAPlayer))
 
-             {
 
-                 options |= BuildOptions.ConnectWithProfiler;
 
-             }
 
-             if (EditorUserBuildSettings.buildWithDeepProfilingSupport && development)
 
-             {
 
-                 options |= BuildOptions.EnableDeepProfilingSupport;
 
-             }
 
- #if UNITY_2021_2_OR_NEWER
 
-             options |= BuildOptions.CleanBuildCache;
 
- #endif
 
-             return options;
 
-         }
 
-         private static string GetLocationPathName(string buildDir, BuildTarget target)
 
-         {
 
-             switch(target)
 
-             {
 
-                 case BuildTarget.StandaloneWindows:
 
-                 case BuildTarget.StandaloneWindows64: return $"{buildDir}/{PlayerSettings.productName}.exe";
 
-                 case BuildTarget.StandaloneOSX: return buildDir;
 
-                 case BuildTarget.iOS: return buildDir;
 
-                 case BuildTarget.Android: return buildDir;
 
-                 case BuildTarget.StandaloneLinux64: return $"{buildDir}/{PlayerSettings.productName}";
 
-                 default: return buildDir;
 
-             }
 
-         }
 
-         public static void GenerateStripedAOTDlls(BuildTarget target)
 
-         {
 
-             string outputPath = $"{SettingsUtil.HybridCLRDataDir}/StrippedAOTDllsTempProj/{target}";
 
-             BashUtil.RemoveDir(outputPath);
 
-             var buildOptions = GetBuildPlayerOptions(target);
 
-             bool oldExportAndroidProj = EditorUserBuildSettings.exportAsGoogleAndroidProject;
 
- #if UNITY_EDITOR_OSX
 
-             bool oldCreateSolution = UnityEditor.OSXStandalone.UserBuildSettings.createXcodeProject;
 
- #elif UNITY_EDITOR_WIN
 
-             bool oldCreateSolution = UnityEditor.WindowsStandalone.UserBuildSettings.createSolution;
 
- #endif
 
- #if TUANJIE_2022_3_OR_NEWER
 
-             bool oldOpenHarmonyProj = EditorUserBuildSettings.exportAsOpenHarmonyProject;
 
- #endif
 
-             bool oldBuildScriptsOnly = EditorUserBuildSettings.buildScriptsOnly;
 
-             string oldBuildLocation = EditorUserBuildSettings.GetBuildLocation(target);
 
-             try
 
-             {
 
-                 CheckSettings.DisableMethodBridgeDevelopmentFlagChecking = true;
 
-                 EditorUserBuildSettings.buildScriptsOnly = true;
 
-                 string location = GetLocationPathName(outputPath, target);
 
-                 EditorUserBuildSettings.SetBuildLocation(target, location);
 
-                 switch (target)
 
-                 {
 
-                     case BuildTarget.StandaloneWindows:
 
-                     case BuildTarget.StandaloneWindows64:
 
-                     {
 
-     #if UNITY_EDITOR_WIN
 
-                         UnityEditor.WindowsStandalone.UserBuildSettings.createSolution = true;
 
-     #endif
 
-                             break;
 
-                     }
 
-                     case BuildTarget.StandaloneOSX:
 
-                     {
 
-     #if UNITY_EDITOR_OSX
 
-                         UnityEditor.OSXStandalone.UserBuildSettings.createXcodeProject = true;
 
-     #endif
 
-                         break;
 
-                     }
 
-     #if TUANJIE_2022_3_OR_NEWER
 
-                     case BuildTarget.HMIAndroid:
 
-     #endif
 
-                     case BuildTarget.Android:
 
-                     {
 
-                         EditorUserBuildSettings.exportAsGoogleAndroidProject = true;
 
-                         break;
 
-                     }
 
-     #if TUANJIE_2022_3_OR_NEWER
 
-                     case BuildTarget.OpenHarmony:
 
-                     {
 
-                         EditorUserBuildSettings.exportAsOpenHarmonyProject = true;
 
-                         break;
 
-                     }
 
-     #endif
 
-                 }
 
-                 Debug.Log($"GenerateStripedAOTDlls build option:{buildOptions}");
 
-                 BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions()
 
-                 {
 
-                     scenes = EditorBuildSettings.scenes.Where(s => s.enabled).Select(s => s.path).ToArray(),
 
-                     locationPathName = location,
 
-                     options = buildOptions,
 
-                     target = target,
 
-                     targetGroup = BuildPipeline.GetBuildTargetGroup(target),
 
- #if UNITY_SERVER
 
-                     subtarget = (int)StandaloneBuildSubtarget.Server,
 
- #endif
 
-                 };
 
-                 var report = BuildPipeline.BuildPlayer(buildPlayerOptions);
 
-                 if (report.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded)
 
-                 {
 
-                     throw new Exception("GenerateStripedAOTDlls failed");
 
-                 }
 
-             }
 
-             finally
 
-             {
 
-                 CheckSettings.DisableMethodBridgeDevelopmentFlagChecking = false;
 
-                 EditorUserBuildSettings.buildScriptsOnly = oldBuildScriptsOnly;
 
-                 EditorUserBuildSettings.SetBuildLocation(target, oldBuildLocation);
 
-                 switch (target)
 
-                 {
 
-                     case BuildTarget.StandaloneWindows:
 
-                     case BuildTarget.StandaloneWindows64:
 
-                     {
 
- #if UNITY_EDITOR_WIN
 
-                         UnityEditor.WindowsStandalone.UserBuildSettings.createSolution = oldCreateSolution;
 
- #endif
 
-                         break;
 
-                     }
 
-                     case BuildTarget.StandaloneOSX:
 
-                     {
 
- #if UNITY_EDITOR_OSX
 
-                             UnityEditor.OSXStandalone.UserBuildSettings.createXcodeProject = oldCreateSolution;
 
- #endif
 
-                         break;
 
-                     }
 
- #if TUANJIE_2022_3_OR_NEWER
 
-                     case BuildTarget.HMIAndroid:
 
- #endif
 
-                     case BuildTarget.Android:
 
-                     {
 
-                         EditorUserBuildSettings.exportAsGoogleAndroidProject = oldExportAndroidProj;
 
-                         break;
 
-                     }
 
- #if TUANJIE_2022_3_OR_NEWER
 
-                     case BuildTarget.OpenHarmony:
 
-                     {
 
-                         EditorUserBuildSettings.exportAsOpenHarmonyProject = oldOpenHarmonyProj;
 
-                         break;
 
-                     }
 
- #endif
 
-                 }
 
-             }
 
-             Debug.Log($"GenerateStripedAOTDlls target:{target} path:{outputPath}");
 
-         }
 
-     }
 
- }
 
 
  |