BuildConfig.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using UnityEditor;
  8. using UnityEngine;
  9. namespace HybridCLR.Editor
  10. {
  11. public static partial class BuildConfig
  12. {
  13. #if !UNITY_IOS
  14. [InitializeOnLoadMethod]
  15. private static void Setup()
  16. {
  17. ///
  18. /// unity允许使用UNITY_IL2CPP_PATH环境变量指定il2cpp的位置,因此我们不再直接修改安装位置的il2cpp,
  19. /// 而是在本地目录
  20. ///
  21. var installerController = new Installer.InstallerController();
  22. var localIl2cppDir = LocalIl2CppDir;
  23. if (!installerController.HasInstalledHybridCLR())
  24. {
  25. if (installerController.CheckValidIl2CppInstallDirectory(installerController.Il2CppBranch, installerController.Il2CppInstallDirectory) == Installer.InstallErrorCode.Ok)
  26. {
  27. installerController.InitHybridCLR(installerController.Il2CppBranch, installerController.Il2CppInstallDirectory);
  28. }
  29. if (!installerController.HasInstalledHybridCLR())
  30. {
  31. Debug.LogError($"未安装本地il2cpp。请在菜单 HybridCLR/Installer 中执行安装");
  32. }
  33. }
  34. Environment.SetEnvironmentVariable("UNITY_IL2CPP_PATH", localIl2cppDir);
  35. }
  36. #endif
  37. public static string ProjectDir => Directory.GetParent(Application.dataPath).ToString();
  38. public static string ScriptingAssembliesJsonFile { get; } = "ScriptingAssemblies.json";
  39. public static string HybridCLRBuildCacheDir => Application.dataPath + "/Bundles";
  40. public static string HotFixDllsOutputDir => $"{HybridCLRDataDir}/HotFixDlls";
  41. public static string AssetBundleOutputDir => $"{HybridCLRBuildCacheDir}/AssetBundleOutput";
  42. public static string AssetBundleSourceDataTempDir => $"{HybridCLRBuildCacheDir}/AssetBundleSourceData";
  43. public static string HybridCLRDataDir { get; } = $"{ProjectDir}/HybridCLRData";
  44. public static string AssembliesPostIl2CppStripDir => $"{HybridCLRDataDir}/AssembliesPostIl2CppStrip";
  45. public static string LocalIl2CppDir => $"{HybridCLRDataDir}/LocalIl2CppData/il2cpp";
  46. public static string MethodBridgeCppDir => $"{LocalIl2CppDir}/libil2cpp/hybridclr/interpreter";
  47. public static string Il2CppBuildCacheDir { get; } = $"{ProjectDir}/Library/Il2cppBuildCache";
  48. public static string GetHotFixDllsOutputDirByTarget(BuildTarget target)
  49. {
  50. return $"{HotFixDllsOutputDir}/{target}";
  51. }
  52. public static string GetAssembliesPostIl2CppStripDir(BuildTarget target)
  53. {
  54. return $"{AssembliesPostIl2CppStripDir}/{target}";
  55. }
  56. public static string GetAssetBundleOutputDirByTarget(BuildTarget target)
  57. {
  58. return $"{AssetBundleOutputDir}/{target}";
  59. }
  60. public static string GetAssetBundleTempDirByTarget(BuildTarget target)
  61. {
  62. return $"{AssetBundleSourceDataTempDir}/{target}";
  63. }
  64. }
  65. }