12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using UnityEngine;
- using UnityEditor;
- using UnityEditor.Callbacks;
- using UnityEditor.iOS.Xcode;
- using System;
- using System.IO;
- using System.Linq;
- using System.Text.RegularExpressions;
- using System.Reflection;
- namespace IronSource.Editor
- {
- public class IronSourceBuildPostprocessor
- {
- [PostProcessBuild]
- public static void OnPostprocessBuild (BuildTarget buildTarget, string buildPath)
- {
- if (buildTarget == BuildTarget.iOS) {
- string projectPath = buildPath + "/Unity-iPhone.xcodeproj/project.pbxproj";
- string dirpath = Application.dataPath + "/IronSource/Editor/";
- string currentNamespace = MethodBase.GetCurrentMethod().DeclaringType.Namespace;
- updateProject (buildTarget, projectPath);
- if (Directory.Exists (dirpath)) {
- //Match the classes that has "Settings" in their name, and don't start with "I"
- var files = Directory.GetFiles (dirpath, "*.cs", SearchOption.TopDirectoryOnly).Where (file => Regex.IsMatch (Path.GetFileName (file), "^(?!I).+Settings.*$"));
- //Go over all the adapter settings classes, and call their updateProject method
- foreach (string file in files) {
- string classname = Path.GetFileNameWithoutExtension (file);
- if (!String.IsNullOrEmpty (classname)) {
- IAdapterSettings adapter = (IAdapterSettings)Activator.CreateInstance (Type.GetType (currentNamespace + "." + classname));
- adapter.updateProject (buildTarget, projectPath);
- }
- }
- }
- }
- Debug.Log ("IronSource build postprocessor finished");
- }
- private static void updateProject (BuildTarget buildTarget, string projectPath)
- {
- Debug.Log ("IronSource - Update project for IronSource");
- PBXProject project = new PBXProject ();
- project.ReadFromString (File.ReadAllText (projectPath));
- string targetId = project.TargetGuidByName (PBXProject.GetUnityTargetName ());
- // Required System Frameworks
- project.AddFrameworkToProject (targetId, "Foundation.framework", false);
- project.AddFrameworkToProject (targetId, "AVFoundation.framework", false);
- project.AddFrameworkToProject (targetId, "Security.framework", false);
- project.AddFrameworkToProject (targetId, "WebKit.framework", false);
- project.AddFrameworkToProject (targetId, "StoreKit.framework", false);
- project.AddFrameworkToProject (targetId, "AdSupport.framework", false);
- project.AddFrameworkToProject (targetId, "CoreMedia.framework", false);
- project.AddFrameworkToProject (targetId, "CoreVideo.framework", false);
- project.AddFrameworkToProject (targetId, "CoreLocation.framework", false);
- project.AddFrameworkToProject (targetId, "CoreTelephony.framework", false);
- project.AddFrameworkToProject (targetId, "CoreGraphics.framework", false);
- project.AddFrameworkToProject (targetId, "QuartzCore.framework", false);
- project.AddFrameworkToProject (targetId, "SystemConfiguration.framework", false);
- project.AddFrameworkToProject (targetId, "CFNetwork.framework", false);
- project.AddFrameworkToProject (targetId, "MobileCoreServices.framework", false);
- project.AddFrameworkToProject (targetId, "AudioToolbox.framework", false);
-
- project.AddFileToBuild (targetId, project.AddFile ("usr/lib/libz.tbd", "Frameworks/libz.tbd", PBXSourceTree.Sdk));
- // Custom Link Flag
- project.AddBuildProperty (targetId, "OTHER_LDFLAGS", "-ObjC");
- File.WriteAllText (projectPath, project.WriteToString ());
- }
- }
- }
|