[new] 支持自定义外部热更新dll的搜索路径 externalHotUpdateAssembliyDirs
parent
45d97d758f
commit
abc70a7ffc
|
|
@ -6,6 +6,7 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using UnityEditor;
|
||||||
|
|
||||||
namespace HybridCLR.Editor.Meta
|
namespace HybridCLR.Editor.Meta
|
||||||
{
|
{
|
||||||
|
|
@ -119,10 +120,30 @@ namespace HybridCLR.Editor.Meta
|
||||||
return typeSigs.Select(s => ToShareTypeSig(s)).ToList();
|
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(
|
var externalDirs = HybridCLRSettings.Instance.externalHotUpdateAssembliyDirs;
|
||||||
SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target)),
|
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 UnityPluginAssemblyResolver(),
|
||||||
new UnityDotNetAOTAssemblyResolver(),
|
new UnityDotNetAOTAssemblyResolver(),
|
||||||
new UnityEditorAssemblyResolver());
|
new UnityEditorAssemblyResolver());
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ namespace HybridCLR.Editor
|
||||||
private SerializedProperty _hotUpdateAssemblies;
|
private SerializedProperty _hotUpdateAssemblies;
|
||||||
private SerializedProperty _preserveHotUpdateAssemblies;
|
private SerializedProperty _preserveHotUpdateAssemblies;
|
||||||
private SerializedProperty _hotUpdateDllCompileOutputRootDir;
|
private SerializedProperty _hotUpdateDllCompileOutputRootDir;
|
||||||
|
private SerializedProperty _externalHotUpdateAssembliyDirs;
|
||||||
private SerializedProperty _strippedAOTDllOutputRootDir;
|
private SerializedProperty _strippedAOTDllOutputRootDir;
|
||||||
private SerializedProperty _patchAOTAssemblies;
|
private SerializedProperty _patchAOTAssemblies;
|
||||||
private SerializedProperty _differentialHybridAssemblies;
|
private SerializedProperty _differentialHybridAssemblies;
|
||||||
|
|
@ -46,6 +47,7 @@ namespace HybridCLR.Editor
|
||||||
_hotUpdateAssemblies = _serializedObject.FindProperty("hotUpdateAssemblies");
|
_hotUpdateAssemblies = _serializedObject.FindProperty("hotUpdateAssemblies");
|
||||||
_preserveHotUpdateAssemblies = _serializedObject.FindProperty("preserveHotUpdateAssemblies");
|
_preserveHotUpdateAssemblies = _serializedObject.FindProperty("preserveHotUpdateAssemblies");
|
||||||
_hotUpdateDllCompileOutputRootDir = _serializedObject.FindProperty("hotUpdateDllCompileOutputRootDir");
|
_hotUpdateDllCompileOutputRootDir = _serializedObject.FindProperty("hotUpdateDllCompileOutputRootDir");
|
||||||
|
_externalHotUpdateAssembliyDirs = _serializedObject.FindProperty("externalHotUpdateAssembliyDirs");
|
||||||
_strippedAOTDllOutputRootDir = _serializedObject.FindProperty("strippedAOTDllOutputRootDir");
|
_strippedAOTDllOutputRootDir = _serializedObject.FindProperty("strippedAOTDllOutputRootDir");
|
||||||
_patchAOTAssemblies = _serializedObject.FindProperty("patchAOTAssemblies");
|
_patchAOTAssemblies = _serializedObject.FindProperty("patchAOTAssemblies");
|
||||||
_differentialHybridAssemblies = _serializedObject.FindProperty("differentialHybridAssemblies");
|
_differentialHybridAssemblies = _serializedObject.FindProperty("differentialHybridAssemblies");
|
||||||
|
|
@ -136,6 +138,7 @@ namespace HybridCLR.Editor
|
||||||
EditorGUILayout.PropertyField(_hotUpdateAssemblies);
|
EditorGUILayout.PropertyField(_hotUpdateAssemblies);
|
||||||
EditorGUILayout.PropertyField(_preserveHotUpdateAssemblies);
|
EditorGUILayout.PropertyField(_preserveHotUpdateAssemblies);
|
||||||
EditorGUILayout.PropertyField(_hotUpdateDllCompileOutputRootDir);
|
EditorGUILayout.PropertyField(_hotUpdateDllCompileOutputRootDir);
|
||||||
|
EditorGUILayout.PropertyField(_externalHotUpdateAssembliyDirs);
|
||||||
EditorGUILayout.PropertyField(_strippedAOTDllOutputRootDir);
|
EditorGUILayout.PropertyField(_strippedAOTDllOutputRootDir);
|
||||||
EditorGUILayout.PropertyField(_patchAOTAssemblies);
|
EditorGUILayout.PropertyField(_patchAOTAssemblies);
|
||||||
EditorGUILayout.PropertyField(_differentialHybridAssemblies);
|
EditorGUILayout.PropertyField(_differentialHybridAssemblies);
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,9 @@ namespace HybridCLR.Editor
|
||||||
[Header("热更新dll编译输出根目录")]
|
[Header("热更新dll编译输出根目录")]
|
||||||
public string hotUpdateDllCompileOutputRootDir = "HybridCLRData/HotUpdateDlls";
|
public string hotUpdateDllCompileOutputRootDir = "HybridCLRData/HotUpdateDlls";
|
||||||
|
|
||||||
|
[Header("外部热更新dll搜索路径")]
|
||||||
|
public string[] externalHotUpdateAssembliyDirs;
|
||||||
|
|
||||||
[Header("裁减后AOT dll输出根目录")]
|
[Header("裁减后AOT dll输出根目录")]
|
||||||
public string strippedAOTDllOutputRootDir = "HybridCLRData/AssembliesPostIl2CppStrip";
|
public string strippedAOTDllOutputRootDir = "HybridCLRData/AssembliesPostIl2CppStrip";
|
||||||
|
|
||||||
|
|
@ -39,7 +42,7 @@ namespace HybridCLR.Editor
|
||||||
public string[] differentialHybridAssemblies;
|
public string[] differentialHybridAssemblies;
|
||||||
|
|
||||||
[Header("差分混合热更新配置数据输出目录")]
|
[Header("差分混合热更新配置数据输出目录")]
|
||||||
public string differentialHybridOptionOutputDir = "Assets/StreamingAssets";
|
public string differentialHybridOptionOutputDir = "HybridCLRData/DifferentialHybridOptionDatas";
|
||||||
|
|
||||||
[Header("生成link.xml时扫描asset中引用的类型")]
|
[Header("生成link.xml时扫描asset中引用的类型")]
|
||||||
public bool collectAssetReferenceTypes;
|
public bool collectAssetReferenceTypes;
|
||||||
|
|
@ -53,9 +56,6 @@ namespace HybridCLR.Editor
|
||||||
[Header("AOT泛型实例化搜索迭代次数")]
|
[Header("AOT泛型实例化搜索迭代次数")]
|
||||||
public int maxGenericReferenceIteration = 10;
|
public int maxGenericReferenceIteration = 10;
|
||||||
|
|
||||||
//[Header("预留MonoPInvokeCallbackAttribute函数个数")]
|
|
||||||
//public int ReversePInvokeWrapperCount = 10;
|
|
||||||
|
|
||||||
[Header("MethodBridge泛型搜索迭代次数")]
|
[Header("MethodBridge泛型搜索迭代次数")]
|
||||||
public int maxMethodBridgeGenericIteration = 10;
|
public int maxMethodBridgeGenericIteration = 10;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "com.focus-creative-games.hybridclr_unity",
|
"name": "com.focus-creative-games.hybridclr_unity",
|
||||||
"version": "1.1.3",
|
"version": "1.1.4",
|
||||||
"displayName": "HybridCLR",
|
"displayName": "HybridCLR",
|
||||||
"description": "Unity package for HybridCLR. It includes editor and runtime scripts and assets for HybridCLR",
|
"description": "Unity package for HybridCLR. It includes editor and runtime scripts and assets for HybridCLR",
|
||||||
"category": "Runtime",
|
"category": "Runtime",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue