modify
This commit is contained in:
parent
67aa8d7131
commit
f1c33b80bb
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0761954ba63648b8b73f8ebb736bb9eb
|
|
||||||
timeCreated: 1737524294
|
|
@ -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();
|
@ -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" };
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user