PostProcessor.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using UnityEditor;
  2. using UnityEngine;
  3. using UnityEditor.Callbacks;
  4. using System.IO;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using ChillyRoom.UnityEditor.iOS.Xcode;
  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. string targetGuid = project.TargetGuidByName("Unity-iPhone");
  25. project.AddFrameworkToProject(targetGuid, "libc++.tbd", false);
  26. project.AddFrameworkToProject(targetGuid, "libz.tbd", false);
  27. project.AddFrameworkToProject(targetGuid, "SystemConfiguration.framework", false);
  28. project.AddFrameworkToProject(targetGuid, "CoreTelephony.framework", false);
  29. project.AddFrameworkToProject(targetGuid, "QuartzCore.framework", false);
  30. project.AddFrameworkToProject(targetGuid, "CoreText.framework", false);
  31. project.AddFrameworkToProject(targetGuid, "CoreGraphics.framework", false);
  32. project.AddFrameworkToProject(targetGuid, "UIKit.framework", false);
  33. project.AddFrameworkToProject(targetGuid, "Foundation.framework", false);
  34. project.AddFrameworkToProject(targetGuid, "CFNetwork.framework", false);
  35. project.AddFrameworkToProject(targetGuid, "CoreMotion.framework", false);
  36. project.AddFrameworkToProject(targetGuid, "AlipaySDK.framework", false);
  37. project.AddFrameworkToProject(targetGuid, "Security.framework", false);
  38. //App名称本地化
  39. string plistPath = Path.Combine(buildPath, "Info.plist");
  40. PlistDocument plist = new PlistDocument();
  41. plist.ReadFromFile(plistPath);
  42. plist.root.SetString("Bundle display name", "${CFBundleDisplayName }");
  43. var infoDirs = Directory.GetDirectories(Application.dataPath + "/AppleDependecy");
  44. for (var i = 0; i < infoDirs.Length; ++i)
  45. {
  46. var files = Directory.GetFiles(infoDirs[i], "*.strings");
  47. project.AddLocalization(files[0], "InfoPlist.strings", "InfoPlist.strings");
  48. }
  49. //修改UnityAppController.mm
  50. //添加URLScheme
  51. PlistElementArray urlArray = plist.root.CreateArray("CFBundleURLTypes");
  52. PlistElementDict urlDict = urlArray.AddDict();
  53. urlDict.SetString("CFBundleURLName", "TestName");
  54. PlistElementArray urlInnerArray = urlDict.CreateArray("TestScheme");
  55. urlInnerArray.AddString("TestValue");
  56. //保存Plist
  57. plist.WriteToFile(plistPath);
  58. //保存PBXProject
  59. File.WriteAllText(projectPath, project.WriteToString());
  60. }
  61. }