forked from luva3178/se.su.dsv.mediastudio.livelinkunity
73 lines
2.0 KiB
C#
73 lines
2.0 KiB
C#
#if UNITY_IOS
|
|
|
|
using UnityEditor;
|
|
using UnityEditor.Callbacks;
|
|
using UnityEditor.iOS.Xcode;
|
|
using System.IO;
|
|
|
|
namespace Klak.Ndi.Editor {
|
|
|
|
// Xcode project file modifier for iOS support
|
|
public class PbxModifier
|
|
{
|
|
[PostProcessBuild]
|
|
public static void OnPostprocessBuild(BuildTarget buildTarget, string path)
|
|
{
|
|
if (buildTarget == BuildTarget.iOS)
|
|
{
|
|
ModifyProjectFile(path);
|
|
ModifyPlistFile(path);
|
|
}
|
|
}
|
|
|
|
static void ModifyProjectFile(string basePath)
|
|
{
|
|
var path = PBXProject.GetPBXProjectPath(basePath);
|
|
|
|
var proj = new PBXProject();
|
|
proj.ReadFromFile(path);
|
|
|
|
var target = proj.GetUnityFrameworkTargetGuid();
|
|
var libPath = "/Library/NDI\\ SDK\\ for\\ Apple/lib/iOS";
|
|
proj.AddBuildProperty(target, "LIBRARY_SEARCH_PATHS", libPath);
|
|
proj.AddFrameworkToProject(target, "Accelerate.framework", false);
|
|
proj.AddFrameworkToProject(target, "VideoToolbox.framework", false);
|
|
proj.AddFrameworkToProject(target, "libndi_ios.a", false);
|
|
|
|
proj.WriteToFile(path);
|
|
}
|
|
|
|
static void ModifyPlistFile(string basePath)
|
|
{
|
|
var path = Path.Combine(basePath, "Info.plist");
|
|
|
|
var plist = new PlistDocument();
|
|
plist.ReadFromFile(path);
|
|
|
|
var root = plist.root;
|
|
|
|
// Bonjour service list
|
|
{
|
|
var key = "NSBonjourServices";
|
|
if (root.values.ContainsKey(key))
|
|
root.values[key].AsArray().AddString("_ndi._tcp");
|
|
else
|
|
root.CreateArray(key).AddString("_ndi._tcp");
|
|
}
|
|
|
|
// LAN usage description
|
|
{
|
|
var key = "NSLocalNetworkUsageDescription";
|
|
var desc = "NDI requires device discovery capability " +
|
|
"on the networks you use.";
|
|
if (!root.values.ContainsKey(key)) root.SetString(key, desc);
|
|
}
|
|
|
|
plist.WriteToFile(path);
|
|
}
|
|
}
|
|
|
|
} // namespace Klak.Ndi.Editor
|
|
|
|
#endif
|