[new] 支持自定义外部热更新dll的搜索路径 externalHotUpdateAssembliyDirs

main
walon 2022-12-02 10:33:13 +08:00
parent 45d97d758f
commit abc70a7ffc
4 changed files with 32 additions and 8 deletions

View File

@ -6,6 +6,7 @@ using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEditor;
namespace HybridCLR.Editor.Meta
{
@ -119,10 +120,30 @@ namespace HybridCLR.Editor.Meta
return typeSigs.Select(s => ToShareTypeSig(s)).ToList();
}
public static IAssemblyResolver CreateBuildTargetAssemblyResolver(UnityEditor.BuildTarget target)
public static IAssemblyResolver CreateHotUpdateAssemblyResolver(BuildTarget target)
{
return new CombinedAssemblyResolver(new PathAssemblyResolver(
SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target)),
var externalDirs = HybridCLRSettings.Instance.externalHotUpdateAssembliyDirs;
var defaultHotUpdateOutputDir = SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target);
if (externalDirs == null || externalDirs.Length == 0)
{
return new PathAssemblyResolver(defaultHotUpdateOutputDir);
}
else
{
var externalDirList = new List<string>();
foreach (var dir in externalDirs)
{
externalDirList.Add($"{dir}/{target}");
externalDirList.Add(dir);
}
externalDirList.Add(defaultHotUpdateOutputDir);
return new PathAssemblyResolver(externalDirList.ToArray());
}
}
public static IAssemblyResolver CreateBuildTargetAssemblyResolver(BuildTarget target)
{
return new CombinedAssemblyResolver(CreateHotUpdateAssemblyResolver(target),
new UnityPluginAssemblyResolver(),
new UnityDotNetAOTAssemblyResolver(),
new UnityEditorAssemblyResolver());

View File

@ -17,6 +17,7 @@ namespace HybridCLR.Editor
private SerializedProperty _hotUpdateAssemblies;
private SerializedProperty _preserveHotUpdateAssemblies;
private SerializedProperty _hotUpdateDllCompileOutputRootDir;
private SerializedProperty _externalHotUpdateAssembliyDirs;
private SerializedProperty _strippedAOTDllOutputRootDir;
private SerializedProperty _patchAOTAssemblies;
private SerializedProperty _differentialHybridAssemblies;
@ -46,6 +47,7 @@ namespace HybridCLR.Editor
_hotUpdateAssemblies = _serializedObject.FindProperty("hotUpdateAssemblies");
_preserveHotUpdateAssemblies = _serializedObject.FindProperty("preserveHotUpdateAssemblies");
_hotUpdateDllCompileOutputRootDir = _serializedObject.FindProperty("hotUpdateDllCompileOutputRootDir");
_externalHotUpdateAssembliyDirs = _serializedObject.FindProperty("externalHotUpdateAssembliyDirs");
_strippedAOTDllOutputRootDir = _serializedObject.FindProperty("strippedAOTDllOutputRootDir");
_patchAOTAssemblies = _serializedObject.FindProperty("patchAOTAssemblies");
_differentialHybridAssemblies = _serializedObject.FindProperty("differentialHybridAssemblies");
@ -136,6 +138,7 @@ namespace HybridCLR.Editor
EditorGUILayout.PropertyField(_hotUpdateAssemblies);
EditorGUILayout.PropertyField(_preserveHotUpdateAssemblies);
EditorGUILayout.PropertyField(_hotUpdateDllCompileOutputRootDir);
EditorGUILayout.PropertyField(_externalHotUpdateAssembliyDirs);
EditorGUILayout.PropertyField(_strippedAOTDllOutputRootDir);
EditorGUILayout.PropertyField(_patchAOTAssemblies);
EditorGUILayout.PropertyField(_differentialHybridAssemblies);

View File

@ -29,6 +29,9 @@ namespace HybridCLR.Editor
[Header("热更新dll编译输出根目录")]
public string hotUpdateDllCompileOutputRootDir = "HybridCLRData/HotUpdateDlls";
[Header("外部热更新dll搜索路径")]
public string[] externalHotUpdateAssembliyDirs;
[Header("裁减后AOT dll输出根目录")]
public string strippedAOTDllOutputRootDir = "HybridCLRData/AssembliesPostIl2CppStrip";
@ -39,7 +42,7 @@ namespace HybridCLR.Editor
public string[] differentialHybridAssemblies;
[Header("差分混合热更新配置数据输出目录")]
public string differentialHybridOptionOutputDir = "Assets/StreamingAssets";
public string differentialHybridOptionOutputDir = "HybridCLRData/DifferentialHybridOptionDatas";
[Header("生成link.xml时扫描asset中引用的类型")]
public bool collectAssetReferenceTypes;
@ -53,9 +56,6 @@ namespace HybridCLR.Editor
[Header("AOT泛型实例化搜索迭代次数")]
public int maxGenericReferenceIteration = 10;
//[Header("预留MonoPInvokeCallbackAttribute函数个数")]
//public int ReversePInvokeWrapperCount = 10;
[Header("MethodBridge泛型搜索迭代次数")]
public int maxMethodBridgeGenericIteration = 10;
}

View File

@ -1,6 +1,6 @@
{
"name": "com.focus-creative-games.hybridclr_unity",
"version": "1.1.3",
"version": "1.1.4",
"displayName": "HybridCLR",
"description": "Unity package for HybridCLR. It includes editor and runtime scripts and assets for HybridCLR",
"category": "Runtime",