BuildCommand.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using HybridCLR.Editor;
  2. using HybridCLR.Editor.Commands;
  3. using Obfuz.Settings;
  4. using Obfuz4HybridCLR;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using System.IO;
  8. using UnityEditor;
  9. using UnityEngine;
  10. public static class BuildCommand
  11. {
  12. [MenuItem("Build/CompileAndObfuscateAndCopyToStreamingAssets")]
  13. public static void CompileAndObfuscateAndCopyToStreamingAssets()
  14. {
  15. BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
  16. CompileDllCommand.CompileDll(target);
  17. string obfuscatedHotUpdateDllPath = PrebuildCommandExt.GetObfuscatedHotUpdateAssemblyOutputPath(target);
  18. ObfuscateUtil.ObfuscateHotUpdateAssemblies(target, obfuscatedHotUpdateDllPath);
  19. Directory.CreateDirectory(Application.streamingAssetsPath);
  20. string hotUpdateDllPath = $"{SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target)}";
  21. List<string> obfuscationRelativeAssemblyNames = ObfuzSettings.Instance.assemblySettings.GetObfuscationRelativeAssemblyNames();
  22. foreach (string assName in SettingsUtil.HotUpdateAssemblyNamesIncludePreserved)
  23. {
  24. string srcDir = obfuscationRelativeAssemblyNames.Contains(assName) ? obfuscatedHotUpdateDllPath : hotUpdateDllPath;
  25. string srcFile = $"{srcDir}/{assName}.dll";
  26. string dstFile = $"{Application.streamingAssetsPath}/{assName}.dll.bytes";
  27. if (File.Exists(srcFile))
  28. {
  29. File.Copy(srcFile, dstFile, true);
  30. Debug.Log($"[CompileAndObfuscate] Copy {srcFile} to {dstFile}");
  31. }
  32. }
  33. }
  34. }