[fix] StripAOTDllCommand生成AOT dll时的BuildOption采用当前Player的设置,避免当打包开启development时, StripAOTDllCommand生成Release aot dll,而打包生成debug aot dll,产生补充元数据及桥接函数生成不匹配的严重错误

main
walon 2023-09-05 17:28:06 +08:00
parent 1eaaf44c97
commit 1d50dfcb6e
1 changed files with 36 additions and 1 deletions

View File

@ -3,10 +3,12 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using UnityEditor; using UnityEditor;
using UnityEngine; using UnityEngine;
using static UnityEngine.Networking.UnityWebRequest;
namespace HybridCLR.Editor.Commands namespace HybridCLR.Editor.Commands
{ {
@ -18,6 +20,37 @@ namespace HybridCLR.Editor.Commands
GenerateStripedAOTDlls(EditorUserBuildSettings.activeBuildTarget); GenerateStripedAOTDlls(EditorUserBuildSettings.activeBuildTarget);
} }
static BuildOptions GetBuildPlayerOptions(BuildTarget buildTarget)
{
BuildOptions options = BuildOptions.BuildScriptsOnly;
bool development = EditorUserBuildSettings.development;
if (development)
{
options |= BuildOptions.Development;
}
if (EditorUserBuildSettings.allowDebugging && development)
{
options |= BuildOptions.AllowDebugging;
}
if (EditorUserBuildSettings.connectProfiler && (development || buildTarget == BuildTarget.WSAPlayer))
{
options |= BuildOptions.ConnectWithProfiler;
}
if (EditorUserBuildSettings.buildWithDeepProfilingSupport && development)
{
options |= BuildOptions.EnableDeepProfilingSupport;
}
#if UNITY_2021_2_OR_NEWER
options |= BuildOptions.CleanBuildCache;
#endif
return options;
}
private static string GetLocationPathName(string buildDir, BuildTarget target) private static string GetLocationPathName(string buildDir, BuildTarget target)
{ {
switch(target) switch(target)
@ -37,7 +70,7 @@ namespace HybridCLR.Editor.Commands
string outputPath = $"{SettingsUtil.HybridCLRDataDir}/StrippedAOTDllsTempProj/{target}"; string outputPath = $"{SettingsUtil.HybridCLRDataDir}/StrippedAOTDllsTempProj/{target}";
BashUtil.RemoveDir(outputPath); BashUtil.RemoveDir(outputPath);
var buildOptions = BuildOptions.BuildScriptsOnly; var buildOptions = GetBuildPlayerOptions(target);
#if UNITY_2021_2_OR_NEWER #if UNITY_2021_2_OR_NEWER
buildOptions |= BuildOptions.CleanBuildCache; buildOptions |= BuildOptions.CleanBuildCache;
#endif #endif
@ -75,6 +108,8 @@ namespace HybridCLR.Editor.Commands
} }
} }
Debug.Log($"GenerateStripedAOTDlls build option:{buildOptions}");
BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions() BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions()
{ {
scenes = EditorBuildSettings.scenes.Where(s => s.enabled).Select(s => s.path).ToArray(), scenes = EditorBuildSettings.scenes.Where(s => s.enabled).Select(s => s.path).ToArray(),