This commit is contained in:
陈思海 2025-03-20 11:53:05 +08:00
parent 67aa8d7131
commit f1c33b80bb
5 changed files with 0 additions and 117 deletions

View File

@ -1,110 +0,0 @@
#if ENABLE_HYBRIDCLR
using HybridCLR.Editor;
using HybridCLR.Editor.Commands;
#endif
using AlicizaX.Editor;
using UnityEditor;
using UnityEngine;
[InitializeOnLoad]
public static class BuildDLLCommand
{
private const string EnableHybridClrScriptingDefineSymbol = "ENABLE_HYBRIDCLR";
public const string AssemblyTextAssetPath = "Bundles/DLL";
static BuildDLLCommand()
{
}
/// <summary>
/// 禁用HybridCLR宏定义。
/// </summary>
[MenuItem("HybridCLR/Tools/Define Symbols/Disable HybridCLR", false, 30)]
public static void Disable()
{
ScriptingDefineSymbols.RemoveScriptingDefineSymbol(EnableHybridClrScriptingDefineSymbol);
HybridCLR.Editor.SettingsUtil.Enable = false;
}
/// <summary>
/// 开启HybridCLR宏定义。
/// </summary>
[MenuItem("HybridCLR/Tools/Define Symbols/Enable HybridCLR", false, 31)]
public static void Enable()
{
ScriptingDefineSymbols.RemoveScriptingDefineSymbol(EnableHybridClrScriptingDefineSymbol);
ScriptingDefineSymbols.AddScriptingDefineSymbol(EnableHybridClrScriptingDefineSymbol);
HybridCLR.Editor.SettingsUtil.Enable = true;
}
#if ENABLE_HYBRIDCLR
[MenuItem("HybridCLR/Tools/Build/BuildAssets And CopyTo AssemblyTextAssetPath")]
public static void BuildAndCopyDlls()
{
BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
CompileDllCommand.CompileDll(target);
CopyAOTHotUpdateDlls(target);
}
#endif
public static void GenerateHybridCLRSome()
{
PrebuildCommand.GenerateAll();
}
public static void BuildAndCopyDlls(BuildTarget target)
{
#if ENABLE_HYBRIDCLR
CompileDllCommand.CompileDll(target);
CopyAOTHotUpdateDlls(target);
#endif
}
public static void CopyAOTHotUpdateDlls(BuildTarget target)
{
CopyAOTAssembliesToAssetPath();
CopyHotUpdateAssembliesToAssetPath();
AssetDatabase.Refresh();
}
public static void CopyAOTAssembliesToAssetPath()
{
#if ENABLE_HYBRIDCLR
var target = EditorUserBuildSettings.activeBuildTarget;
string aotAssembliesSrcDir = SettingsUtil.GetAssembliesPostIl2CppStripDir(target);
string aotAssembliesDstDir = Application.dataPath + "/" + AssemblyTextAssetPath;
foreach (var dll in SettingsUtil.AOTAssemblyNames)
{
string srcDllPath = $"{aotAssembliesSrcDir}/{dll}";
if (!System.IO.File.Exists(srcDllPath))
{
Debug.LogError(
$"ab中添加AOT补充元数据dll:{srcDllPath} 时发生错误,文件不存在。裁剪后的AOT dll在BuildPlayer时才能生成因此需要你先构建一次游戏App后再打包。");
continue;
}
string dllBytesPath = $"{aotAssembliesDstDir}/{dll}.bytes";
System.IO.File.Copy(srcDllPath, dllBytesPath, true);
Debug.Log($"[CopyAOTAssembliesToStreamingAssets] copy AOT dll {srcDllPath} -> {dllBytesPath}");
}
#endif
}
public static void CopyHotUpdateAssembliesToAssetPath()
{
#if ENABLE_HYBRIDCLR
var target = EditorUserBuildSettings.activeBuildTarget;
string hotfixDllSrcDir = SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target);
string hotfixAssembliesDstDir = Application.dataPath + "/" + AssemblyTextAssetPath;
foreach (var dll in SettingsUtil.HotUpdateAssemblyFilesExcludePreserved)
{
string dllPath = $"{hotfixDllSrcDir}/{dll}";
string dllBytesPath = $"{hotfixAssembliesDstDir}/{dll}.bytes";
System.IO.File.Copy(dllPath, dllBytesPath, true);
Debug.Log($"[CopyHotUpdateAssembliesToStreamingAssets] copy hotfix dll {dllPath} -> {dllBytesPath}");
}
#endif
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 0761954ba63648b8b73f8ebb736bb9eb
timeCreated: 1737524294

View File

@ -10,7 +10,6 @@ namespace AlicizaX.Editor
{ {
AssemblyLoadData assemblyLoadData = new AssemblyLoadData(); AssemblyLoadData assemblyLoadData = new AssemblyLoadData();
assemblyLoadData.HotUpdateAssemblies = HybridCLR.Editor.SettingsUtil.HotUpdateAssemblyFilesIncludePreserved; assemblyLoadData.HotUpdateAssemblies = HybridCLR.Editor.SettingsUtil.HotUpdateAssemblyFilesIncludePreserved;
assemblyLoadData.AOTMetaAssemblies = HybridCLR.Editor.SettingsUtil.AOTAssemblyNames;
File.WriteAllText("Assets/Resources/AssemblyLoadData.bytes", Utility.Json.ToJson(assemblyLoadData)); File.WriteAllText("Assets/Resources/AssemblyLoadData.bytes", Utility.Json.ToJson(assemblyLoadData));
AssetDatabase.SaveAssets(); AssetDatabase.SaveAssets();
AssetDatabase.Refresh(); AssetDatabase.Refresh();

View File

@ -38,9 +38,6 @@ public class AssemblyLoadData
private static AssemblyLoadData _instance; private static AssemblyLoadData _instance;
public List<string> HotUpdateAssemblies = new List<string>() public List<string> HotUpdateAssemblies = new List<string>()
{ "GameLib.dll", "GameProto.dll", "GameBase.dll", "GameLogic.dll" }; { "GameLib.dll", "GameProto.dll", "GameBase.dll", "GameLogic.dll" };
public List<string> AOTMetaAssemblies = new List<string>() { "mscorlib.dll", "System.dll", "System.Core.dll" };
} }