PostProcessor.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using UnityEditor;
  2. using UnityEngine;
  3. using UnityEditor.Callbacks;
  4. using UnityEditor.iOS.Xcode;
  5. using System.IO;
  6. using System.Collections;
  7. using System.Collections.Generic;
  8. public class NewBehaviourScript
  9. {
  10. [PostProcessBuild(100)]
  11. public static void OnPostprocessBuild(BuildTarget buildTarget, string buildPath)
  12. {
  13. if (buildTarget != BuildTarget.iOS)
  14. {
  15. return;
  16. }
  17. string projectPath = PBXProject.GetPBXProjectPath(buildPath);
  18. PBXProject project = new PBXProject();
  19. project.ReadFromFile(projectPath);
  20. //关闭BitCode
  21. string target = project.TargetGuidByName("Unity-iPhone");
  22. project.SetBuildProperty(target, "ENABLE_BITCODE", "NO");
  23. //添加资源
  24. FileUtil.CopyFileOrDirectory(Application.dataPath + "/AppleDependency", buildPath + "/AppleDependency");
  25. string[] filePaths = Directory.GetFiles(buildPath + "/AppleDependency", "*.*", SearchOption.AllDirectories);
  26. for (int i = 0; i < filePaths.Length; i++)
  27. {
  28. if (Path.GetExtension(filePaths[i]) == ".meta")
  29. {
  30. continue;
  31. }
  32. project.AddFileToBuild(target, project.AddFile(filePaths[i], filePaths[i].Replace(buildPath, ""), PBXSourceTree.Source));
  33. }
  34. //添加引用库
  35. string targetGuid = project.TargetGuidByName("Unity-iPhone");
  36. project.AddFrameworkToProject(targetGuid, "libc++.tbd", false);
  37. project.AddFrameworkToProject(targetGuid, "libz.tbd", false);
  38. project.AddFrameworkToProject(targetGuid, "SystemConfiguration.framework", false);
  39. project.AddFrameworkToProject(targetGuid, "CoreTelephony.framework", false);
  40. project.AddFrameworkToProject(targetGuid, "QuartzCore.framework", false);
  41. project.AddFrameworkToProject(targetGuid, "CoreText.framework", false);
  42. project.AddFrameworkToProject(targetGuid, "CoreGraphics.framework", false);
  43. project.AddFrameworkToProject(targetGuid, "UIKit.framework", false);
  44. project.AddFrameworkToProject(targetGuid, "Foundation.framework", false);
  45. project.AddFrameworkToProject(targetGuid, "CFNetwork.framework", false);
  46. project.AddFrameworkToProject(targetGuid, "CoreMotion.framework", false);
  47. project.AddFrameworkToProject(targetGuid, "AlipaySDK.framework", false);
  48. project.AddFrameworkToProject(targetGuid, "Security.framework", false);
  49. //修改PList
  50. string plistPath = Path.Combine(buildPath, "Info.plist");
  51. PlistDocument plist = new PlistDocument();
  52. plist.ReadFromFile(plistPath);
  53. plist.root.SetString("Bundle display name", "CFBundleDisplayName");
  54. //添加URLScheme
  55. PlistElementArray urlArray = plist.root.CreateArray("CFBundleURLTypes");
  56. PlistElementDict urlDict = urlArray.AddDict();
  57. urlDict.SetString("CFBundleURLName", "TestName");
  58. PlistElementArray urlInnerArray = urlDict.CreateArray("TestScheme");
  59. urlInnerArray.AddString("TestValue");
  60. //保存Plist
  61. plist.WriteToFile(plistPath);
  62. //保存PBXProject
  63. File.WriteAllText(projectPath, project.WriteToString());
  64. }
  65. }