| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | using HybridCLR.Editor.Installer;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using UnityEditor;using UnityEditor.Build;using UnityEditor.Build.Reporting;using UnityEditor.UnityLinker;using UnityEngine;#if !UNITY_2021_1_OR_NEWERusing UnityEditor.Il2Cpp;#endifnamespace HybridCLR.Editor.BuildProcessors{    internal class CopyStrippedAOTAssemblies : IPostprocessBuildWithReport, IPreprocessBuildWithReport#if !UNITY_2021_1_OR_NEWER     , IIl2CppProcessor#endif    {        public int callbackOrder => 0;#if UNITY_2021_1_OR_NEWER        public static string GetStripAssembliesDir2021(BuildTarget target)        {            string projectDir = SettingsUtil.ProjectDir;            switch (target)            {                case BuildTarget.StandaloneWindows:                    case BuildTarget.StandaloneWindows64:                    return $"{projectDir}/Library/Bee/artifacts/WinPlayerBuildProgram/ManagedStripped";                case BuildTarget.StandaloneLinux64:                    return $"{projectDir}/Library/Bee/artifacts/LinuxPlayerBuildProgram/ManagedStripped";                case BuildTarget.WSAPlayer:                    return $"{projectDir}/Library/Bee/artifacts/UWPPlayerBuildProgram/ManagedStripped";                case BuildTarget.Android:                    return $"{projectDir}/Library/Bee/artifacts/Android/ManagedStripped";#if TUANJIE_2022_3_OR_NEWER                case BuildTarget.HMIAndroid:                    return $"{projectDir}/Library/Bee/artifacts/HMIAndroid/ManagedStripped";#endif                case BuildTarget.iOS:#if UNITY_TVOS                case BuildTarget.tvOS:#endif                return $"{projectDir}/Library/Bee/artifacts/iOS/ManagedStripped";#if UNITY_VISIONOS                case BuildTarget.VisionOS:#if UNITY_6000_0_OR_NEWER                return $"{projectDir}/Library/Bee/artifacts/VisionOS/ManagedStripped";#else                return $"{projectDir}/Library/Bee/artifacts/iOS/ManagedStripped";#endif#endif                case BuildTarget.WebGL:                    return $"{projectDir}/Library/Bee/artifacts/WebGL/ManagedStripped";                case BuildTarget.StandaloneOSX:                    return $"{projectDir}/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/ManagedStripped";                case BuildTarget.PS4:                    return $"{projectDir}/Library/Bee/artifacts/PS4PlayerBuildProgram/ManagedStripped";                case BuildTarget.PS5:                    return $"{projectDir}/Library/Bee/artifacts/PS5PlayerBuildProgram/ManagedStripped";#if UNITY_WEIXINMINIGAME                case BuildTarget.WeixinMiniGame:                    return $"{projectDir}/Library/Bee/artifacts/WeixinMiniGame/ManagedStripped";#endif#if UNITY_OPENHARMONY                case BuildTarget.OpenHarmony:                    return $"{projectDir}/Library/Bee/artifacts/OpenHarmonyPlayerBuildProgram/ManagedStripped";#endif                default: return "";            }        }#else        private string GetStripAssembliesDir2020(BuildTarget target)        {            string subPath = target == BuildTarget.Android ?                "assets/bin/Data/Managed" :                "Data/Managed/";            return $"{SettingsUtil.ProjectDir}/Temp/StagingArea/{subPath}";        }        public void OnBeforeConvertRun(BuildReport report, Il2CppBuildPipelineData data)        {            BuildTarget target = report.summary.platform;            CopyStripDlls(GetStripAssembliesDir2020(target), target);        }#endif        public static void CopyStripDlls(string srcStripDllPath, BuildTarget target)        {            if (!SettingsUtil.Enable)            {                Debug.Log($"[CopyStrippedAOTAssemblies] disabled");                return;            }            Debug.Log($"[CopyStrippedAOTAssemblies] CopyScripDlls. src:{srcStripDllPath} target:{target}");            var dstPath = SettingsUtil.GetAssembliesPostIl2CppStripDir(target);            Directory.CreateDirectory(dstPath);            foreach (var fileFullPath in Directory.GetFiles(srcStripDllPath, "*.dll"))            {                var file = Path.GetFileName(fileFullPath);                Debug.Log($"[CopyStrippedAOTAssemblies] copy strip dll {fileFullPath} ==> {dstPath}/{file}");                File.Copy($"{fileFullPath}", $"{dstPath}/{file}", true);            }        }        public void OnPostprocessBuild(BuildReport report)        {#if UNITY_2021_1_OR_NEWER            BuildTarget target = report.summary.platform;            string srcStripDllPath = GetStripAssembliesDir2021(target);            if (!string.IsNullOrEmpty(srcStripDllPath) && Directory.Exists(srcStripDllPath))            {                CopyStripDlls(srcStripDllPath, target);            }#endif        }        public void OnPreprocessBuild(BuildReport report)        {            BuildTarget target = report.summary.platform;            var dstPath = SettingsUtil.GetAssembliesPostIl2CppStripDir(target);            BashUtil.RecreateDir(dstPath);        }    }}
 |