From 064af2872e7d2eff586b28a16505705766a56bb0 Mon Sep 17 00:00:00 2001 From: walon Date: Wed, 4 Jun 2025 00:20:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D`HybridCLR/ObfuzExtension/Gen?= =?UTF-8?q?erateAll`=E7=94=9F=E6=88=90AOTGenericReferences=E6=97=B6?= =?UTF-8?q?=E7=83=AD=E6=9B=B4=E6=96=B0dll=E8=BF=98=E6=9C=AA=E6=B7=B7?= =?UTF-8?q?=E6=B7=86=EF=BC=8C=E5=B9=B6=E4=B8=94=E7=83=AD=E6=9B=B4=E6=96=B0?= =?UTF-8?q?dll=E7=9A=84resolve=E8=B7=AF=E5=BE=84=E4=B8=BA=E5=8E=9F?= =?UTF-8?q?=E5=A7=8B=E6=9C=AA=E6=B7=B7=E6=B7=86=E7=9A=84dll=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=EF=BC=8C=E8=80=8C=E4=B8=8D=E6=98=AF=E6=B7=B7=E6=B7=86?= =?UTF-8?q?=E5=90=8E=E7=9A=84dll=E8=B7=AF=E5=BE=84=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/PrebuildCommandExt.cs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Editor/PrebuildCommandExt.cs b/Editor/PrebuildCommandExt.cs index f5c161e..f060597 100644 --- a/Editor/PrebuildCommandExt.cs +++ b/Editor/PrebuildCommandExt.cs @@ -23,6 +23,8 @@ using IAssemblyResolver = HybridCLR.Editor.Meta.IAssemblyResolver; using CombinedAssemblyResolver = HybridCLR.Editor.Meta.CombinedAssemblyResolver; using MetaUtil = HybridCLR.Editor.Meta.MetaUtil; using AssemblyCache = HybridCLR.Editor.Meta.AssemblyCache; +using HybridCLR.Editor.AOT; +using Analyzer2 = HybridCLR.Editor.AOT.Analyzer; namespace Obfuz4HybridCLR { @@ -47,11 +49,11 @@ namespace Obfuz4HybridCLR Il2CppDefGeneratorCommand.GenerateIl2CppDef(); LinkGeneratorCommand.GenerateLinkXml(target); StripAOTDllCommand.GenerateStripedAOTDlls(target); - AOTReferenceGeneratorCommand.GenerateAOTGenericReference(target); string obfuscatedHotUpdateDllPath = GetObfuscatedHotUpdateAssemblyOutputPath(target); ObfuscateUtil.ObfuscateHotUpdateAssemblies(target, obfuscatedHotUpdateDllPath); GenerateMethodBridgeAndReversePInvokeWrapper(target, obfuscatedHotUpdateDllPath); + GenerateAOTGenericReference(target, obfuscatedHotUpdateDllPath); } [MenuItem("HybridCLR/ObfuzExtension/CompileAndObfuscateDll")] @@ -120,5 +122,25 @@ namespace Obfuz4HybridCLR MethodBridgeGeneratorCommand.CleanIl2CppBuildCache(); } + + public static void GenerateAOTGenericReference(BuildTarget target, string obfuscatedHotUpdateDllPath) + { + var gs = SettingsUtil.HybridCLRSettings; + List hotUpdateDllNames = SettingsUtil.HotUpdateAssemblyNamesExcludePreserved; + + AssemblyReferenceDeepCollector collector = new AssemblyReferenceDeepCollector( + CreateObfuscatedHotUpdateAndAOTAssemblyResolver(target, hotUpdateDllNames, ObfuzSettings.Instance.assemblySettings.GetAssembliesToObfuscate(), obfuscatedHotUpdateDllPath), hotUpdateDllNames); + var analyzer = new Analyzer2(new Analyzer2.Options + { + MaxIterationCount = Math.Min(20, gs.maxGenericReferenceIteration), + Collector = collector, + }); + + analyzer.Run(); + + var writer = new GenericReferenceWriter(); + writer.Write(analyzer.AotGenericTypes.ToList(), analyzer.AotGenericMethods.ToList(), $"{Application.dataPath}/{gs.outputAOTGenericReferenceFile}"); + AssetDatabase.Refresh(); + } } }