| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- #if UNITY_EDITOR
- // System
- using System;
- using System.Linq;
- // Unity
- using UnityEditor;
- using UnityEditor.Build;
- using UnityEditor.Build.Reporting;
- using UnityEditor.UnityLinker;
- namespace OPS.Obfuscator
- {
- public class BuildPostProcessor : IPreprocessBuildWithReport, IFilterBuildAssemblies, IPostBuildPlayerScriptDLLs, IUnityLinkerProcessor, IPostprocessBuildWithReport
- {
- // Defines if an Obfuscation Process took place.
- private static bool hasObfuscated = false;
- public int callbackOrder
- {
- get { return int.MaxValue; }
- }
- private static OPS.Obfuscator.Editor.Settings.Unity.Editor.EditorSettings PrepareEditorSettings()
- {
- OPS.Obfuscator.Editor.Settings.Unity.Editor.EditorSettings var_EditorSettings = new Editor.Settings.Unity.Editor.EditorSettings();
- return var_EditorSettings;
- }
- private static OPS.Obfuscator.Editor.Settings.Unity.Build.BuildSettings PrepareBuildSettings(BuildReport _Report)
- {
- OPS.Obfuscator.Editor.Settings.Unity.Build.BuildSettings var_BuildSettings = new Editor.Settings.Unity.Build.BuildSettings();
- var_BuildSettings.BuildTarget = UnityEditor.EditorUserBuildSettings.activeBuildTarget;
- var_BuildSettings.BuildTargetGroup = UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup;
- var_BuildSettings.UnityBuildReport = _Report;
- var_BuildSettings.IsIL2CPPBuild = PlayerSettings.GetScriptingBackend(UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup) == ScriptingImplementation.IL2CPP;
- var_BuildSettings.IsCompressed = !typeof(UnityEditor.EditorUserBuildSettings).GetMethod("GetCompressionType", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).Invoke(null, new object[] { UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup }).ToString().Equals("None");
- var_BuildSettings.BuildIntoProject = (UnityEditor.EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneOSX && UnityEditor.EditorUserBuildSettings.GetPlatformSettings("OSXUniversal", "CreateXcodeProject").Equals("true"))
- || (UnityEditor.EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows && UnityEditor.EditorUserBuildSettings.GetPlatformSettings("Standalone", "CreateSolution").Equals("true"))
- || (UnityEditor.EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64 && UnityEditor.EditorUserBuildSettings.GetPlatformSettings("Standalone", "CreateSolution").Equals("true"))
- || (UnityEditor.EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneLinux64 && UnityEditor.EditorUserBuildSettings.GetPlatformSettings("Standalone", "CreateSolution").Equals("true"));
- return var_BuildSettings;
- }
- public void OnPreprocessBuild(BuildReport _Report)
- {
- // Settings
- OPS.Obfuscator.Editor.Settings.Unity.Editor.EditorSettings var_EditorSettings = PrepareEditorSettings();
- OPS.Obfuscator.Editor.Settings.Unity.Build.BuildSettings var_BuildSettings = PrepareBuildSettings(_Report);
- // Init
- OPS.Obfuscator.Editor.Obfuscator.Init();
- hasObfuscated = false;
- try
- {
- // Pre Build
- OPS.Obfuscator.Editor.Obfuscator.Singleton.PreBuild(var_EditorSettings, var_BuildSettings);
- }
- catch (Exception e)
- {
- UnityEngine.Debug.LogError("[OPS] Error: " + e.ToString());
- }
- }
- public string[] OnFilterAssemblies(BuildOptions _BuildOptions, string[] _Assemblies)
- {
- // Return all assemblies - Filtered with build.
- return _Assemblies;
- }
- public void OnPostBuildPlayerScriptDLLs(BuildReport _Report)
- {
- if (!hasObfuscated)
- {
- if (BuildPipeline.isBuildingPlayer && !EditorApplication.isPlayingOrWillChangePlaymode)
- {
- try
- {
- UnityEditor.EditorApplication.LockReloadAssemblies();
- // Settings
- OPS.Obfuscator.Editor.Settings.Unity.Editor.EditorSettings var_EditorSettings = PrepareEditorSettings();
- OPS.Obfuscator.Editor.Settings.Unity.Build.BuildSettings var_BuildSettings = PrepareBuildSettings(_Report);
- // Obfuscate
- OPS.Obfuscator.Editor.Obfuscator.Singleton.PostAssemblyBuild(var_EditorSettings, var_BuildSettings);
- hasObfuscated = true;
- }
- catch (Exception e)
- {
- UnityEngine.Debug.LogError("[OPS] Error: " + e.ToString());
- }
- finally
- {
- UnityEditor.EditorApplication.UnlockReloadAssemblies();
- }
- }
- }
- }
- public string GenerateAdditionalLinkXmlFile(BuildReport _Report, UnityLinkerBuildPipelineData _Data)
- {
- if (hasObfuscated)
- {
- try
- {
- // Settings
- OPS.Obfuscator.Editor.Settings.Unity.Editor.EditorSettings var_EditorSettings = PrepareEditorSettings();
- OPS.Obfuscator.Editor.Settings.Unity.Build.BuildSettings var_BuildSettings = PrepareBuildSettings(_Report);
- // Post Build
- OPS.Obfuscator.Editor.Obfuscator.Singleton.PostAssetsBuild(var_EditorSettings, var_BuildSettings);
- }
- catch (Exception e)
- {
- UnityEngine.Debug.LogError("[OPS] Error: " + e.ToString());
- }
- }
- return null;
- }
- #if UNITY_2021_2_OR_NEWER
- #else
- public void OnBeforeRun(BuildReport report, UnityLinkerBuildPipelineData data)
- {
- }
- public void OnAfterRun(BuildReport report, UnityLinkerBuildPipelineData data)
- {
- }
- #endif
- public void OnPostprocessBuild(BuildReport _Report)
- {
- if (hasObfuscated)
- {
- try
- {
- // Settings
- OPS.Obfuscator.Editor.Settings.Unity.Editor.EditorSettings var_EditorSettings = PrepareEditorSettings();
- OPS.Obfuscator.Editor.Settings.Unity.Build.BuildSettings var_BuildSettings = PrepareBuildSettings(_Report);
- // Post Build
- OPS.Obfuscator.Editor.Obfuscator.Singleton.PostBuild(var_EditorSettings, var_BuildSettings);
- }
- catch (Exception e)
- {
- UnityEngine.Debug.LogError("[OPS] Error: " + e.ToString());
- }
- }
- }
- }
- }
- #endif
|