83 lines
2.8 KiB
C#
83 lines
2.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using UnityEditor;
|
|
using UnityEditor.Build;
|
|
using UnityEditor.Build.Reporting;
|
|
using UnityEditor.Il2Cpp;
|
|
using UnityEditor.UnityLinker;
|
|
using UnityEngine;
|
|
|
|
namespace HybridCLR.Editor.BuildProcessors
|
|
{
|
|
internal class CopyStrippedAOTAssemblies : IPostprocessBuildWithReport
|
|
#if !UNITY_2021_1_OR_NEWER
|
|
, IIl2CppProcessor
|
|
#endif
|
|
{
|
|
|
|
public int callbackOrder => 0;
|
|
|
|
#if UNITY_2021_1_OR_NEWER
|
|
public static string GetStripAssembliesDir2021(BuildTarget target)
|
|
{
|
|
string projectDir = SettingsUtil.ProjectDir;
|
|
#if UNITY_STANDALONE_WIN
|
|
return $"{projectDir}/Library/Bee/artifacts/WinPlayerBuildProgram/ManagedStripped";
|
|
#elif UNITY_ANDROID
|
|
return $"{projectDir}/Library/Bee/artifacts/Android/ManagedStripped";
|
|
#elif UNITY_IOS
|
|
return $"{projectDir}/Temp/StagingArea/Data/Managed/tempStrip";
|
|
#elif UNITY_WEBGL
|
|
return $"{projectDir}/Library/Bee/artifacts/WebGL/ManagedStripped";
|
|
#elif UNITY_EDITOR_OSX
|
|
return $"{projectDir}/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/ManagedStripped";
|
|
#else
|
|
throw new NotSupportedException("GetOriginBuildStripAssembliesDir");
|
|
#endif
|
|
}
|
|
#else
|
|
private string GetStripAssembliesDir2020(BuildTarget target)
|
|
{
|
|
string subPath = target == BuildTarget.Android ?
|
|
"assets/bin/Data/Managed" :
|
|
"Data/Managed/";
|
|
return $"{SettingsUtil.ProjectDir}/Temp/StagingArea/{subPath}";
|
|
}
|
|
|
|
public void OnBeforeConvertRun(BuildReport report, Il2CppBuildPipelineData data)
|
|
{
|
|
// 此回调只在 2020中调用
|
|
CopyStripDlls(GetStripAssembliesDir2020(data.target), data.target);
|
|
}
|
|
#endif
|
|
|
|
public static void CopyStripDlls(string srcStripDllPath, BuildTarget target)
|
|
{
|
|
Debug.Log($"[CopyStrippedAOTAssemblies] CopyScripDlls. src:{srcStripDllPath} target:{target}");
|
|
|
|
var dstPath = SettingsUtil.GetAssembliesPostIl2CppStripDir(target);
|
|
|
|
Directory.CreateDirectory(dstPath);
|
|
|
|
foreach (var fileFullPath in Directory.GetFiles(srcStripDllPath, "*.dll"))
|
|
{
|
|
var file = Path.GetFileName(fileFullPath);
|
|
Debug.Log($"[CopyStrippedAOTAssemblies] copy strip dll {fileFullPath} ==> {dstPath}/{file}");
|
|
File.Copy($"{fileFullPath}", $"{dstPath}/{file}", true);
|
|
}
|
|
}
|
|
|
|
public void OnPostprocessBuild(BuildReport report)
|
|
{
|
|
#if UNITY_2021_1_OR_NEWER && !UNITY_IOS
|
|
BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
|
|
CopyStripDlls(GetStripAssembliesDir2021(target), target);
|
|
#endif
|
|
}
|
|
}
|
|
}
|