private void ProcessIl2CppOutputForSolution(BuildPostProcessArgs args, IIl2CppPlatformProvider il2cppPlatformProvider, IEnumerable <string> cppPlugins) { if (EditorUtility.DisplayCancelableProgressBar("Building Player", "Copying IL2CPP related files", 0.1f)) { throw new OperationCanceledException(); } // Move managed assemblies var projectName = GetPathSafeProductName(args); FileUtil.MoveFileOrDirectory(args.stagingAreaDataManaged, Paths.Combine(args.stagingArea, projectName, "Managed")); // Move il2cpp data var il2cppOutputPath = IL2CPPBuilder.GetCppOutputPath(args.stagingAreaData); var il2cppDataSource = Path.Combine(il2cppOutputPath, "Data"); var il2cppDataTarget = Path.Combine(args.stagingAreaData, "il2cpp_data"); FileUtil.MoveFileOrDirectory(il2cppDataSource, il2cppDataTarget); // Move generated source code var il2cppOutputProjectDirectory = Path.Combine(args.stagingArea, "Il2CppOutputProject"); var sourceFolder = Path.Combine(il2cppOutputProjectDirectory, "Source"); Directory.CreateDirectory(sourceFolder); FileUtil.MoveFileOrDirectory(il2cppOutputPath, Path.Combine(sourceFolder, "il2cppOutput")); // Copy C++ plugins if (cppPlugins.Any()) { var cppPluginsDirectory = Path.Combine(sourceFolder, "CppPlugins"); Directory.CreateDirectory(cppPluginsDirectory); foreach (var cppPlugin in cppPlugins) { FileUtil.CopyFileOrDirectory(cppPlugin, Path.Combine(cppPluginsDirectory, Path.GetFileName(cppPlugin))); } } // Copy IL2CPP var il2cppSourceFolder = IL2CPPUtils.GetIl2CppFolder(); var il2cppTargetFolder = Paths.Combine(il2cppOutputProjectDirectory, "IL2CPP"); Directory.CreateDirectory(il2cppTargetFolder); FileUtil.CopyFileOrDirectory(Path.Combine(il2cppSourceFolder, "build"), Path.Combine(il2cppTargetFolder, "build")); FileUtil.CopyFileOrDirectory(Path.Combine(il2cppSourceFolder, "external"), Path.Combine(il2cppTargetFolder, "external")); FileUtil.CopyFileOrDirectory(Path.Combine(il2cppSourceFolder, "libil2cpp"), Path.Combine(il2cppTargetFolder, "libil2cpp")); if (IL2CPPUtils.EnableIL2CPPDebugger(il2cppPlatformProvider, BuildTargetGroup.Standalone)) { FileUtil.CopyFileOrDirectory(Path.Combine(il2cppSourceFolder, "libmono"), Path.Combine(il2cppTargetFolder, "libmono")); } FileUtil.CopyFileOrDirectory(Path.GetDirectoryName(IL2CPPBuilder.GetMapFileParserPath()), Path.Combine(il2cppTargetFolder, "MapFileParser")); FileUtil.CopyFileOrDirectory(Path.Combine(il2cppSourceFolder, "il2cpp_root"), Path.Combine(il2cppTargetFolder, "il2cpp_root")); WriteIl2CppOutputProject(args, il2cppOutputProjectDirectory, il2cppPlatformProvider); }