diff --git a/Editor/PrebuildCommandExt.cs b/Editor/PrebuildCommandExt.cs index 8d1e20f..fcb6aa6 100644 --- a/Editor/PrebuildCommandExt.cs +++ b/Editor/PrebuildCommandExt.cs @@ -18,33 +18,27 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -using HybridCLR.Editor.Commands; -using HybridCLR.Editor; -using Obfuz.Settings; +using HybridCLR; +using HybridCLR.CodeGen.AOT; +using HybridCLR.CodeGen.MethodBridge; +using HybridCLR.Commands; +using HybridCLR.Installer; +using HybridCLR.Meta; +using HybridCLR.Mod; +using HybridCLR.Utils; using Obfuz; +using Obfuz.Settings; +using System; using System.Collections; using System.Collections.Generic; -using UnityEditor; -using UnityEngine; -using System.Reflection; -using System; using System.IO; -using HybridCLR.Editor.Link; -using HybridCLR.Editor.Meta; -using UnityEditor.Build; -using HybridCLR.Editor.Installer; -using HybridCLR.Editor.MethodBridge; using System.Linq; -using Analyzer = HybridCLR.Editor.MethodBridge.Analyzer; -using HybridCLR.Editor.Settings; -using Obfuz.Utils; -using FileUtil = Obfuz.Utils.FileUtil; -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; +using System.Reflection; +using UnityEditor; +using UnityEditor.Build; +using UnityEngine; +using CombinedAssemblyResolver = HybridCLR.Mod.CombinedAssemblyResolver; +using IAssemblyResolver = HybridCLR.Mod.IAssemblyResolver; namespace Obfuz4HybridCLR { @@ -67,7 +61,6 @@ namespace Obfuz4HybridCLR BuildTarget target = EditorUserBuildSettings.activeBuildTarget; CompileDllCommand.CompileDll(target); Il2CppDefGeneratorCommand.GenerateIl2CppDef(); - GeneratePolymorphicCodesWhenEnable(); LinkGeneratorCommand.GenerateLinkXml(target); StripAOTDllCommand.GenerateStripedAOTDlls(target); @@ -87,23 +80,6 @@ namespace Obfuz4HybridCLR ObfuscateUtil.ObfuscateHotUpdateAssemblies(target, obfuscatedHotUpdateDllPath); } - [MenuItem("HybridCLR/ObfuzExtension/GeneratePolymorphicCodes")] - public static void GeneratePolymorphicCodes() - { - ObfuscateUtil.GeneratePolymorphicCodes($"{SettingsUtil.LocalIl2CppDir}/libil2cpp"); - } - - private static void GeneratePolymorphicCodesWhenEnable() - { - PolymorphicDllSettings settings = ObfuzSettings.Instance.polymorphicDllSettings; - if (!settings.enable) - { - UnityEngine.Debug.LogWarning("Polymorphic code generation is disabled."); - return; - } - GeneratePolymorphicCodes(); - } - public static IAssemblyResolver CreateObfuscatedHotUpdateAssemblyResolver(BuildTarget target, List obfuscatedHotUpdateAssemblies, string obfuscatedHotUpdateDllPath) { return new FixedSetAssemblyResolver(obfuscatedHotUpdateDllPath, obfuscatedHotUpdateAssemblies); @@ -130,7 +106,7 @@ namespace Obfuz4HybridCLR } AssemblyReferenceDeepCollector collector = new AssemblyReferenceDeepCollector(MetaUtil.CreateAOTAssemblyResolver(target), aotAssemblyNames); - var methodBridgeAnalyzer = new Analyzer(new Analyzer.Options + var methodBridgeAnalyzer = new MethodBridgeAnalyzer(new MethodBridgeAnalyzer.Options { MaxIterationCount = Math.Min(20, SettingsUtil.HybridCLRSettings.maxMethodBridgeGenericIteration), Collector = collector, @@ -146,19 +122,12 @@ namespace Obfuz4HybridCLR var calliAnalyzer = new CalliAnalyzer(cache, hotUpdateDlls); calliAnalyzer.Run(); - var pinvokeAnalyzer = new PInvokeAnalyzer(cache, hotUpdateDlls); - pinvokeAnalyzer.Run(); - var callPInvokeMethodSignatures = pinvokeAnalyzer.PInvokeMethodSignatures; - string templateFile = $"{SettingsUtil.TemplatePathInPackage}/MethodBridge.cpp.tpl"; string outputFile = $"{SettingsUtil.GeneratedCppDir}/MethodBridge.cpp"; - var callNativeMethodSignatures = calliAnalyzer.CalliMethodSignatures.Concat(pinvokeAnalyzer.PInvokeMethodSignatures).ToList(); + var callNativeMethodSignatures = calliAnalyzer.CalliMethodSignatures.ToList(); - var generateMethodBridgeMethod = typeof(MethodBridgeGeneratorCommand).GetMethod("GenerateMethodBridgeCppFile", BindingFlags.NonPublic | BindingFlags.Static); - generateMethodBridgeMethod.Invoke(null, new object[] { methodBridgeAnalyzer.GenericMethods, reversePInvokeAnalyzer.ReversePInvokeMethods, callNativeMethodSignatures, templateFile, outputFile }); - - MethodBridgeGeneratorCommand.CleanIl2CppBuildCache(); + MethodBridgeGeneratorCommand.GenerateMethodBridgeCppFile(methodBridgeAnalyzer.GenericMethods, reversePInvokeAnalyzer.ReversePInvokeMethods, callNativeMethodSignatures, outputFile); } public static void GenerateAOTGenericReference(BuildTarget target, string obfuscatedHotUpdateDllPath) @@ -168,7 +137,7 @@ namespace Obfuz4HybridCLR AssemblyReferenceDeepCollector collector = new AssemblyReferenceDeepCollector( CreateObfuscatedHotUpdateAndAOTAssemblyResolver(target, hotUpdateDllNames, ObfuzSettings.Instance.assemblySettings.GetAssembliesToObfuscate(), obfuscatedHotUpdateDllPath), hotUpdateDllNames); - var analyzer = new Analyzer2(new Analyzer2.Options + var analyzer = new AOTReferenceAnalyzer(new AOTReferenceAnalyzer.Options { MaxIterationCount = Math.Min(20, gs.maxGenericReferenceIteration), Collector = collector, @@ -176,7 +145,7 @@ namespace Obfuz4HybridCLR analyzer.Run(); - var writer = new GenericReferenceWriter(); + var writer = new AOTGenericReferenceWriter(); writer.Write(analyzer.AotGenericTypes.ToList(), analyzer.AotGenericMethods.ToList(), $"{Application.dataPath}/{gs.outputAOTGenericReferenceFile}"); AssetDatabase.Refresh(); }