From 93f855f8ae0157e94105b9831ed4992779cfc773 Mon Sep 17 00:00:00 2001 From: walon Date: Tue, 29 Nov 2022 17:11:25 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E4=BF=AE=E5=A4=8D=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=A1=A5=E6=8E=A5=E5=87=BD=E6=95=B0=E6=97=B6=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=BD=BF=E7=94=A8editor=E7=8E=AF=E5=A2=83=E7=9A=84dll=EF=BC=8C?= =?UTF-8?q?=E5=AF=BC=E8=87=B4NativeArray=E4=B9=8B=E7=B1=BB=E7=9A=84?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=B8=8E=E6=89=93=E5=8C=85=E7=9A=84aot=20dll?= =?UTF-8?q?=E4=B8=8D=E4=B8=80=E8=87=B4=EF=BC=8C=E8=BF=9B=E8=80=8C=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=A1=A5=E6=8E=A5=E7=AD=BE=E5=90=8D=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84bug=E3=80=82=E7=9B=AE=E5=89=8D=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E4=BB=8E=E8=A3=81=E5=89=AA=E5=90=8E=E7=9A=84AOT=20dll=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E8=AF=BB=E5=8F=96=EF=BC=8C=E4=BD=86=E7=BC=BA=E7=82=B9?= =?UTF-8?q?=E6=98=AF=E9=9C=80=E8=A6=81=E5=85=88build=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E7=94=9F=E6=88=90AOT=20dll=EF=BC=8C=E5=86=8D=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=A1=A5=E6=8E=A5=E5=87=BD=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/Commands/MethodBridgeGeneratorCommand.cs | 14 ++++++++++---- Editor/Meta/MetaUtil.cs | 2 +- ...olver.cs => UnityDotNetAOTAssemblyResolver.cs} | 15 ++++++++++++++- ...eta => UnityDotNetAOTAssemblyResolver.cs.meta} | 2 +- package.json | 2 +- 5 files changed, 27 insertions(+), 8 deletions(-) rename Editor/Meta/{UnityAOTAssemblyResolver.cs => UnityDotNetAOTAssemblyResolver.cs} (50%) rename Editor/Meta/{UnityAOTAssemblyResolver.cs.meta => UnityDotNetAOTAssemblyResolver.cs.meta} (83%) diff --git a/Editor/Commands/MethodBridgeGeneratorCommand.cs b/Editor/Commands/MethodBridgeGeneratorCommand.cs index 4c092b2..3d33549 100644 --- a/Editor/Commands/MethodBridgeGeneratorCommand.cs +++ b/Editor/Commands/MethodBridgeGeneratorCommand.cs @@ -51,16 +51,22 @@ namespace HybridCLR.Editor.Commands GenerateMethodBridge(true); } + static IAssemblyResolver CreateBuildTargetAssemblyResolver(BuildTarget target) + { + return new CombinedAssemblyResolver(new PathAssemblyResolver( + SettingsUtil.GetAssembliesPostIl2CppStripDir(target), + SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target)) + ); + } + public static void GenerateMethodBridge(bool compileDll) { - // 此处理论会有点问题,打每个平台的时候,都得针对当前平台生成桥接函数 - // 但影响不大,先这样吧 + BuildTarget target = EditorUserBuildSettings.activeBuildTarget; if (compileDll) { CompileDllCommand.CompileDllActiveBuildTarget(); } - - using (AssemblyReferenceDeepCollector collector = new AssemblyReferenceDeepCollector(MetaUtil.CreateBuildTargetAssemblyResolver(EditorUserBuildSettings.activeBuildTarget), SettingsUtil.HotUpdateAssemblyNames)) + using (AssemblyReferenceDeepCollector collector = new AssemblyReferenceDeepCollector(CreateBuildTargetAssemblyResolver(target), SettingsUtil.HotUpdateAssemblyNames)) { var analyzer = new Analyzer(new Analyzer.Options { diff --git a/Editor/Meta/MetaUtil.cs b/Editor/Meta/MetaUtil.cs index 45983ab..167cc15 100644 --- a/Editor/Meta/MetaUtil.cs +++ b/Editor/Meta/MetaUtil.cs @@ -124,7 +124,7 @@ namespace HybridCLR.Editor.Meta return new CombinedAssemblyResolver(new PathAssemblyResolver( SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target)), new UnityPluginAssemblyResolver(), - new UnityAOTAssemblyResolver(), + new UnityDotNetAOTAssemblyResolver(), new UnityEditorAssemblyResolver()); } } diff --git a/Editor/Meta/UnityAOTAssemblyResolver.cs b/Editor/Meta/UnityDotNetAOTAssemblyResolver.cs similarity index 50% rename from Editor/Meta/UnityAOTAssemblyResolver.cs rename to Editor/Meta/UnityDotNetAOTAssemblyResolver.cs index fcd0319..b8df2a6 100644 --- a/Editor/Meta/UnityAOTAssemblyResolver.cs +++ b/Editor/Meta/UnityDotNetAOTAssemblyResolver.cs @@ -9,12 +9,25 @@ using UnityEngine; namespace HybridCLR.Editor.Meta { - public class UnityAOTAssemblyResolver : IAssemblyResolver + public class UnityDotNetAOTAssemblyResolver : IAssemblyResolver { public string ResolveAssembly(string assemblyName, bool throwExIfNotFind) { // +#if !UNITY_2021_1_OR_NEWER var assemblyFile = $"{UnityEditor.EditorApplication.applicationContentsPath}/MonoBleedingEdge/lib/mono/unityaot/{assemblyName}.dll"; +#else +#if UNITY_STANDALONE_WIN + var assemblyFile = $"{UnityEditor.EditorApplication.applicationContentsPath}/MonoBleedingEdge/lib/mono/unityaot-win32/{assemblyName}.dll"; +#elif UNITY_STANDALONE_OSX || UNITY_IOS + var assemblyFile = $"{UnityEditor.EditorApplication.applicationContentsPath}/MonoBleedingEdge/lib/mono/unityaot-macos/{assemblyName}.dll"; +#elif UNITY_STANDALONE_LINUX || UNITY_ANDROID + var assemblyFile = $"{UnityEditor.EditorApplication.applicationContentsPath}/MonoBleedingEdge/lib/mono/unityaot-linux/{assemblyName}.dll"; +#else + var assemblyFile = $"{UnityEditor.EditorApplication.applicationContentsPath}/MonoBleedingEdge/lib/mono/unityaot-linux/{assemblyName}.dll"; +#endif +#endif + if (File.Exists(assemblyFile)) { Debug.Log($"UnityAOTAssemblyResolver.ResolveAssembly:{assemblyFile}"); diff --git a/Editor/Meta/UnityAOTAssemblyResolver.cs.meta b/Editor/Meta/UnityDotNetAOTAssemblyResolver.cs.meta similarity index 83% rename from Editor/Meta/UnityAOTAssemblyResolver.cs.meta rename to Editor/Meta/UnityDotNetAOTAssemblyResolver.cs.meta index 8fb10f3..ce41f39 100644 --- a/Editor/Meta/UnityAOTAssemblyResolver.cs.meta +++ b/Editor/Meta/UnityDotNetAOTAssemblyResolver.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 029bc0368e1ada342aa29a18d4fae879 +guid: 87ece9687eaa17648bdc9d2c9bf30520 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/package.json b/package.json index 0f00897..1ee9382 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.focus-creative-games.hybridclr_unity", - "version": "1.1.0", + "version": "1.1.1", "displayName": "HybridCLR", "description": "Unity package for HybridCLR. It includes editor and runtime scripts and assets for HybridCLR", "category": "Runtime",