fix: fix compile error on hybridclr v9.0.0
parent
2b3ebc54a0
commit
f5023252f1
|
|
@ -18,33 +18,27 @@
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
using HybridCLR.Editor.Commands;
|
using HybridCLR;
|
||||||
using HybridCLR.Editor;
|
using HybridCLR.CodeGen.AOT;
|
||||||
using Obfuz.Settings;
|
using HybridCLR.CodeGen.MethodBridge;
|
||||||
|
using HybridCLR.Commands;
|
||||||
|
using HybridCLR.Installer;
|
||||||
|
using HybridCLR.Meta;
|
||||||
|
using HybridCLR.Mod;
|
||||||
|
using HybridCLR.Utils;
|
||||||
using Obfuz;
|
using Obfuz;
|
||||||
|
using Obfuz.Settings;
|
||||||
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEditor;
|
|
||||||
using UnityEngine;
|
|
||||||
using System.Reflection;
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
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 System.Linq;
|
||||||
using Analyzer = HybridCLR.Editor.MethodBridge.Analyzer;
|
using System.Reflection;
|
||||||
using HybridCLR.Editor.Settings;
|
using UnityEditor;
|
||||||
using Obfuz.Utils;
|
using UnityEditor.Build;
|
||||||
using FileUtil = Obfuz.Utils.FileUtil;
|
using UnityEngine;
|
||||||
using IAssemblyResolver = HybridCLR.Editor.Meta.IAssemblyResolver;
|
using CombinedAssemblyResolver = HybridCLR.Mod.CombinedAssemblyResolver;
|
||||||
using CombinedAssemblyResolver = HybridCLR.Editor.Meta.CombinedAssemblyResolver;
|
using IAssemblyResolver = HybridCLR.Mod.IAssemblyResolver;
|
||||||
using MetaUtil = HybridCLR.Editor.Meta.MetaUtil;
|
|
||||||
using AssemblyCache = HybridCLR.Editor.Meta.AssemblyCache;
|
|
||||||
using HybridCLR.Editor.AOT;
|
|
||||||
using Analyzer2 = HybridCLR.Editor.AOT.Analyzer;
|
|
||||||
|
|
||||||
namespace Obfuz4HybridCLR
|
namespace Obfuz4HybridCLR
|
||||||
{
|
{
|
||||||
|
|
@ -67,7 +61,6 @@ namespace Obfuz4HybridCLR
|
||||||
BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
|
BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
|
||||||
CompileDllCommand.CompileDll(target);
|
CompileDllCommand.CompileDll(target);
|
||||||
Il2CppDefGeneratorCommand.GenerateIl2CppDef();
|
Il2CppDefGeneratorCommand.GenerateIl2CppDef();
|
||||||
GeneratePolymorphicCodesWhenEnable();
|
|
||||||
LinkGeneratorCommand.GenerateLinkXml(target);
|
LinkGeneratorCommand.GenerateLinkXml(target);
|
||||||
StripAOTDllCommand.GenerateStripedAOTDlls(target);
|
StripAOTDllCommand.GenerateStripedAOTDlls(target);
|
||||||
|
|
||||||
|
|
@ -87,23 +80,6 @@ namespace Obfuz4HybridCLR
|
||||||
ObfuscateUtil.ObfuscateHotUpdateAssemblies(target, obfuscatedHotUpdateDllPath);
|
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<string> obfuscatedHotUpdateAssemblies, string obfuscatedHotUpdateDllPath)
|
public static IAssemblyResolver CreateObfuscatedHotUpdateAssemblyResolver(BuildTarget target, List<string> obfuscatedHotUpdateAssemblies, string obfuscatedHotUpdateDllPath)
|
||||||
{
|
{
|
||||||
return new FixedSetAssemblyResolver(obfuscatedHotUpdateDllPath, obfuscatedHotUpdateAssemblies);
|
return new FixedSetAssemblyResolver(obfuscatedHotUpdateDllPath, obfuscatedHotUpdateAssemblies);
|
||||||
|
|
@ -130,7 +106,7 @@ namespace Obfuz4HybridCLR
|
||||||
}
|
}
|
||||||
AssemblyReferenceDeepCollector collector = new AssemblyReferenceDeepCollector(MetaUtil.CreateAOTAssemblyResolver(target), aotAssemblyNames);
|
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),
|
MaxIterationCount = Math.Min(20, SettingsUtil.HybridCLRSettings.maxMethodBridgeGenericIteration),
|
||||||
Collector = collector,
|
Collector = collector,
|
||||||
|
|
@ -146,19 +122,12 @@ namespace Obfuz4HybridCLR
|
||||||
|
|
||||||
var calliAnalyzer = new CalliAnalyzer(cache, hotUpdateDlls);
|
var calliAnalyzer = new CalliAnalyzer(cache, hotUpdateDlls);
|
||||||
calliAnalyzer.Run();
|
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";
|
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);
|
MethodBridgeGeneratorCommand.GenerateMethodBridgeCppFile(methodBridgeAnalyzer.GenericMethods, reversePInvokeAnalyzer.ReversePInvokeMethods, callNativeMethodSignatures, outputFile);
|
||||||
generateMethodBridgeMethod.Invoke(null, new object[] { methodBridgeAnalyzer.GenericMethods, reversePInvokeAnalyzer.ReversePInvokeMethods, callNativeMethodSignatures, templateFile, outputFile });
|
|
||||||
|
|
||||||
MethodBridgeGeneratorCommand.CleanIl2CppBuildCache();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void GenerateAOTGenericReference(BuildTarget target, string obfuscatedHotUpdateDllPath)
|
public static void GenerateAOTGenericReference(BuildTarget target, string obfuscatedHotUpdateDllPath)
|
||||||
|
|
@ -168,7 +137,7 @@ namespace Obfuz4HybridCLR
|
||||||
|
|
||||||
AssemblyReferenceDeepCollector collector = new AssemblyReferenceDeepCollector(
|
AssemblyReferenceDeepCollector collector = new AssemblyReferenceDeepCollector(
|
||||||
CreateObfuscatedHotUpdateAndAOTAssemblyResolver(target, hotUpdateDllNames, ObfuzSettings.Instance.assemblySettings.GetAssembliesToObfuscate(), obfuscatedHotUpdateDllPath), hotUpdateDllNames);
|
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),
|
MaxIterationCount = Math.Min(20, gs.maxGenericReferenceIteration),
|
||||||
Collector = collector,
|
Collector = collector,
|
||||||
|
|
@ -176,7 +145,7 @@ namespace Obfuz4HybridCLR
|
||||||
|
|
||||||
analyzer.Run();
|
analyzer.Run();
|
||||||
|
|
||||||
var writer = new GenericReferenceWriter();
|
var writer = new AOTGenericReferenceWriter();
|
||||||
writer.Write(analyzer.AotGenericTypes.ToList(), analyzer.AotGenericMethods.ToList(), $"{Application.dataPath}/{gs.outputAOTGenericReferenceFile}");
|
writer.Write(analyzer.AotGenericTypes.ToList(), analyzer.AotGenericMethods.ToList(), $"{Application.dataPath}/{gs.outputAOTGenericReferenceFile}");
|
||||||
AssetDatabase.Refresh();
|
AssetDatabase.Refresh();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue