/// <summary> /// Creates an app extension. /// </summary> /// <returns>The GUID of the new target.</returns> /// <param name="proj">A project passed as this argument.</param> /// <param name="mainTargetGuid">The GUID of the main target to link the app to.</param> /// <param name="name">The name of the app extension.</param> /// <param name="bundleId">The bundle ID of the app extension. The bundle ID must be /// prefixed with the parent app bundle ID.</param> /// <param name="infoPlistPath">Path to the app extension Info.plist document.</param> public static string AddAppExtension(this PBXProject proj, string mainTargetGuid, string name, string bundleId, string infoPlistPath) { string ext = ".appex"; var newTargetGuid = proj.AddTarget(name, ext, "com.apple.product-type.app-extension"); foreach (var configName in proj.BuildConfigNames()) { var configGuid = proj.BuildConfigByName(newTargetGuid, configName); if (configName.Contains("Debug")) { SetDefaultAppExtensionDebugBuildFlags(proj, configGuid); } else { SetDefaultAppExtensionReleaseBuildFlags(proj, configGuid); } proj.SetBuildPropertyForConfig(configGuid, "INFOPLIST_FILE", infoPlistPath); proj.SetBuildPropertyForConfig(configGuid, "PRODUCT_BUNDLE_IDENTIFIER", bundleId); } proj.AddSourcesBuildPhase(newTargetGuid); proj.AddResourcesBuildPhase(newTargetGuid); proj.AddFrameworksBuildPhase(newTargetGuid); string copyFilesPhaseGuid = proj.AddCopyFilesBuildPhase(mainTargetGuid, "Embed App Extensions", "", "13"); proj.AddFileToBuildSection(mainTargetGuid, copyFilesPhaseGuid, proj.GetTargetProductFileRef(newTargetGuid)); proj.AddTargetDependency(mainTargetGuid, newTargetGuid); return(newTargetGuid); }
/// <summary> /// Creates a watch application. /// </summary> /// <returns>The GUID of the new target.</returns> /// <param name="proj">A project passed as this argument.</param> /// <param name="mainTargetGuid">The GUID of the main target to link the watch app to.</param> /// <param name="watchExtensionTargetGuid">The GUID of watch extension as returned by [[AddWatchExtension()]].</param> /// <param name="name">The name of the watch app. It must the same as the name of the watch extension.</param> /// <param name="bundleId">The bundle ID of the watch app.</param> /// <param name="infoPlistPath">Path to the watch app Info.plist document.</param> public static string AddWatchApp(this PBXProject proj, string mainTargetGuid, string watchExtensionTargetGuid, string name, string bundleId, string infoPlistPath) { var newTargetGuid = proj.AddTarget(name, ".app", "com.apple.product-type.application.watchapp2"); var isbcModuleName = proj.nativeTargets[watchExtensionTargetGuid].name.Replace(" ", "_"); foreach (var configName in proj.BuildConfigNames()) { var configGuid = proj.BuildConfigByName(newTargetGuid, configName); if (configName.Contains("Debug")) { SetDefaultWatchAppDebugBuildFlags(proj, configGuid); } else { SetDefaultWatchAppReleaseBuildFlags(proj, configGuid); } proj.SetBuildPropertyForConfig(configGuid, "PRODUCT_BUNDLE_IDENTIFIER", bundleId); proj.SetBuildPropertyForConfig(configGuid, "INFOPLIST_FILE", infoPlistPath); proj.SetBuildPropertyForConfig(configGuid, "IBSC_MODULE", isbcModuleName); } proj.AddResourcesBuildPhase(newTargetGuid); string copyFilesGuid = proj.AddCopyFilesBuildPhase(newTargetGuid, "Embed App Extensions", "", "13"); proj.AddFileToBuildSection(newTargetGuid, copyFilesGuid, proj.GetTargetProductFileRef(watchExtensionTargetGuid)); string copyWatchFilesGuid = proj.AddCopyFilesBuildPhase(mainTargetGuid, "Embed Watch Content", "$(CONTENTS_FOLDER_PATH)/Watch", "16"); proj.AddFileToBuildSection(mainTargetGuid, copyWatchFilesGuid, proj.GetTargetProductFileRef(newTargetGuid)); proj.AddTargetDependency(newTargetGuid, watchExtensionTargetGuid); proj.AddTargetDependency(mainTargetGuid, newTargetGuid); return(newTargetGuid); }