Automatically copy XPC Services to correct location

This commit is contained in:
Brentley Jones 2018-08-02 07:56:28 -05:00
parent 0a88147956
commit 341e0214ed
13 changed files with 679 additions and 1 deletions

View File

@ -40,6 +40,11 @@ public struct TargetSource: Equatable {
case carbonResources
public struct CopyFilesSettings: Equatable, Hashable {
public static let xpcServices = CopyFilesSettings(
destination: .productsDirectory,
subpath: "$(CONTENTS_FOLDER_PATH)/XPCServices"
)
public enum Destination: String {
case absolutePath
case productsDirectory

View File

@ -429,6 +429,7 @@ public class PBXProjGenerator {
var dependencies: [String] = []
var targetFrameworkBuildFiles: [String] = []
var frameworkBuildPaths = Set<String>()
var copyFilesBuildPhasesFiles: [TargetSource.BuildPhase.CopyFilesSettings: [String]] = [:]
var copyFrameworksReferences: [String] = []
var copyResourcesReferences: [String] = []
var copyWatchReferences: [String] = []
@ -500,6 +501,8 @@ public class PBXProjGenerator {
copyFrameworksReferences.append(embedFile.reference)
} else if dependencyTarget.type.isApp && dependencyTarget.platform == .watchOS {
copyWatchReferences.append(embedFile.reference)
} else if dependencyTarget.type == .xpcService {
copyFilesBuildPhasesFiles[.xpcServices, default: []].append(embedFile.reference)
} else {
copyResourcesReferences.append(embedFile.reference)
}
@ -657,7 +660,7 @@ public class PBXProjGenerator {
buildPhases.append(script.reference)
}
let copyFilesBuildPhasesFiles = getBuildFilesForCopyFilesPhases()
copyFilesBuildPhasesFiles.merge(getBuildFilesForCopyFilesPhases()) { $0 + $1 }
if !copyFilesBuildPhasesFiles.isEmpty {
for (copyFiles, buildPhaseFiles) in copyFilesBuildPhasesFiles {
let copyFilesBuildPhase = createObject(

View File

@ -197,6 +197,7 @@ class SourceGenerator {
subpath: "include/$(PRODUCT_NAME)"
))
case "framework": return .frameworks
case "xpc": return .copyFiles(.xpcServices)
case "xcconfig", "entitlements", "gpx", "lproj", "apns": return nil
default: return .resources
}

View File

@ -29,6 +29,7 @@
BF_182635022050 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FR_830053537293 /* Assets.xcassets */; };
BF_184447863946 = {isa = PBXBuildFile; fileRef = FR_935153865209 /* iMessageApp.app */; };
BF_186245454304 /* LocalizedStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = VG_118219888726 /* LocalizedStoryboard.storyboard */; };
BF_190684453680 = {isa = PBXBuildFile; fileRef = FR_376569054786 /* XPC Service.xpc */; };
BF_206432481076 /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_340586388409 /* ExtensionDelegate.swift */; };
BF_211435872001 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = VG_473000061463 /* Localizable.strings */; };
BF_212221512596 /* StaticLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_470929579339 /* StaticLibrary.swift */; };
@ -45,6 +46,8 @@
BF_284620660317 /* MyBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = FR_238161558082 /* MyBundle.bundle */; };
BF_292474606791 = {isa = PBXBuildFile; fileRef = FR_525119120469 /* Framework.framework */; };
BF_303822704662 = {isa = PBXBuildFile; fileRef = FR_472296042419 /* Framework.framework */; };
BF_304637845091 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = FR_151462316179 /* main.m */; };
BF_308631758818 /* XPC Service.xpc in CopyFiles */ = {isa = PBXBuildFile; fileRef = FR_376569054786 /* XPC Service.xpc */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
BF_314868376788 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = VG_746876637628 /* Localizable.stringsdict */; };
BF_324363145049 /* Framework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FR_472296042419 /* Framework.framework */; };
BF_331192862207 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_481575785861 /* ViewController.swift */; settings = {COMPILER_FLAGS = "-Werror"; }; };
@ -62,35 +65,46 @@
BF_501771188469 /* Alamofire.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FR_410645050443 /* Alamofire.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
BF_503484983186 /* MoreUnder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_196911129660 /* MoreUnder.swift */; };
BF_510053944904 /* Headers in Headers */ = {isa = PBXBuildFile; fileRef = FR_815403394914 /* Headers */; settings = {ATTRIBUTES = (Public, ); }; };
BF_518775144316 /* SomeXPCService.xpc in CopyFiles */ = {isa = PBXBuildFile; fileRef = FR_229826849033 /* SomeXPCService.xpc */; };
BF_526105569599 = {isa = PBXBuildFile; fileRef = FR_437179166843 /* StaticLibrary_Swift.a */; };
BF_535236390262 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FR_257516580010 /* Alamofire.framework */; };
BF_538515166673 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = VG_256263906698 /* LaunchScreen.storyboard */; };
BF_552913093094 /* Framework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FR_525119120469 /* Framework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
BF_561304997165 /* Standalone.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_675266829517 /* Standalone.swift */; };
BF_563614389392 = {isa = PBXBuildFile; fileRef = FR_618687462494 /* iMessageExtension.appex */; };
BF_597639300414 /* Framework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FR_525119120469 /* Framework.framework */; };
BF_607543323797 /* StaticLibrary_ObjC.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = FR_698230898030 /* StaticLibrary_ObjC.h */; };
BF_612351978356 /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = VG_264279911176 /* Interface.storyboard */; };
BF_624802436672 /* FrameworkFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_172952167809 /* FrameworkFile.swift */; };
BF_632297340262 /* StaticLibrary_ObjC.m in Sources */ = {isa = PBXBuildFile; fileRef = "FR_698230898030-1" /* StaticLibrary_ObjC.m */; };
BF_647038614509 /* iMessageApp.app in Resources */ = {isa = PBXBuildFile; fileRef = FR_935153865209 /* iMessageApp.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
BF_650026899468 = {isa = PBXBuildFile; fileRef = FR_602719163962 /* XPC_Service.h */; settings = {ATTRIBUTES = (Public, ); }; };
BF_670499288392 /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = VG_229021855709 /* Model.xcdatamodeld */; settings = {COMPILER_FLAGS = "-Werror"; }; };
BF_681504666330 = {isa = PBXBuildFile; fileRef = FR_825232110500 /* App_iOS.app */; };
BF_703054643820 /* MessagesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_310979699934 /* MessagesViewController.swift */; };
BF_704149935229 /* Standalone.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_675266829517 /* Standalone.swift */; };
BF_721498080533 /* ResourceFolder in Resources */ = {isa = PBXBuildFile; fileRef = FR_257073931060 /* ResourceFolder */; };
BF_725992639588 = {isa = PBXBuildFile; fileRef = FR_480982116789 /* App_macOS.app */; };
BF_732745079658 = {isa = PBXBuildFile; fileRef = FR_324671077936 /* App_watchOS.app */; };
BF_734036107922 /* MyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = FR_183521624014 /* MyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; };
BF_742449020987 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FR_410645050443 /* Alamofire.framework */; };
BF_747443236192 /* App_watchOS.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = FR_324671077936 /* App_watchOS.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
BF_752022362638 /* module.modulemap in CopyFiles */ = {isa = PBXBuildFile; fileRef = FR_665156855283 /* module.modulemap */; };
BF_757906110813 = {isa = PBXBuildFile; fileRef = FR_662315837182 /* Framework.framework */; };
BF_770495922915 /* StaticLibrary_ObjC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FR_399755008402 /* StaticLibrary_ObjC.a */; };
BF_803757127643 = {isa = PBXBuildFile; fileRef = FR_739513596122 /* XPC_ServiceProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
BF_807556340853 /* Empty.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = FR_837374194182 /* Empty.h */; };
BF_813358525536 /* MyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = FR_183521624014 /* MyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; };
BF_828878846239 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = VG_201160695646 /* MainInterface.storyboard */; };
BF_830383951771 /* NotificationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_304712043717 /* NotificationController.swift */; };
BF_854463933379 = {isa = PBXBuildFile; fileRef = FR_438704538506 /* Framework.framework */; };
BF_854691035877 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FR_257516580010 /* Alamofire.framework */; };
BF_855988705556 /* XPC_Service.m in Sources */ = {isa = PBXBuildFile; fileRef = FR_602719163945 /* XPC_Service.m */; };
BF_860391087135 /* StandaloneAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FR_408537768279 /* StandaloneAssets.xcassets */; };
BF_863842036151 /* Alamofire.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FR_410645050443 /* Alamofire.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
BF_870702193513 /* iMessageExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = FR_618687462494 /* iMessageExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
BF_892119987440 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_854336462818 /* AppDelegate.swift */; settings = {COMPILER_FLAGS = "-Werror"; }; };
BF_897881229855 /* Alamofire.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FR_257516580010 /* Alamofire.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
BF_898051828670 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FR_752394658615 /* Alamofire.framework */; };
BF_901390118565 /* FrameworkFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR_172952167809 /* FrameworkFile.swift */; };
BF_905038616071 /* Framework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FR_472296042419 /* Framework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@ -121,6 +135,13 @@
remoteGlobalIDString = NT_825232110500;
remoteInfo = App_iOS;
};
CIP_23558050412 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = P_8448771205358 /* Project object */;
proxyType = 1;
remoteGlobalIDString = NT_525119120469;
remoteInfo = Framework_macOS;
};
CIP_28856087625 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = P_8448771205358 /* Project object */;
@ -142,6 +163,13 @@
remoteGlobalIDString = NT_399755008402;
remoteInfo = StaticLibrary_ObjC;
};
CIP_62903878492 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = P_8448771205358 /* Project object */;
proxyType = 1;
remoteGlobalIDString = NT_399755008402;
remoteInfo = StaticLibrary_ObjC;
};
CIP_66745555235 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = P_8448771205358 /* Project object */;
@ -163,6 +191,13 @@
remoteGlobalIDString = NT_399755008402;
remoteInfo = StaticLibrary_ObjC;
};
CIP_74378499241 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = P_8448771205358 /* Project object */;
proxyType = 1;
remoteGlobalIDString = NT_376569054786;
remoteInfo = "XPC Service";
};
CIP_74741847386 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = P_8448771205358 /* Project object */;
@ -256,6 +291,18 @@
name = "Embed App Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
CFBP_4930089528 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
BF_552913093094 /* Framework.framework in Embed Frameworks */,
BF_897881229855 /* Alamofire.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
CFBP_5460766702 /* Embed App Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@ -289,16 +336,29 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
CFBP_8368933518 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "$(CONTENTS_FOLDER_PATH)/XPCServices";
dstSubfolderSpec = 16;
files = (
BF_308631758818 /* XPC Service.xpc in CopyFiles */,
BF_518775144316 /* SomeXPCService.xpc in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
FR_118219888726 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LocalizedStoryboard.storyboard; sourceTree = "<group>"; };
FR_123503999387 /* App_iOS_UITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = App_iOS_UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
FR_145531354566 /* TestProjectUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestProjectUITests.swift; sourceTree = "<group>"; };
FR_151462316179 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
FR_172952167809 /* FrameworkFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkFile.swift; sourceTree = "<group>"; };
FR_183521624014 /* MyFramework.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyFramework.h; sourceTree = "<group>"; };
FR_196911129660 /* MoreUnder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoreUnder.swift; sourceTree = "<group>"; };
FR_201160695646 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = "<group>"; };
FR_229826849033 /* SomeXPCService.xpc */ = {isa = PBXFileReference; path = SomeXPCService.xpc; sourceTree = "<group>"; };
FR_232605427418 /* Mintfile */ = {isa = PBXFileReference; path = Mintfile; sourceTree = "<group>"; };
FR_238161558082 /* MyBundle.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = MyBundle.bundle; sourceTree = "<group>"; };
FR_247808626608 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@ -313,6 +373,7 @@
FR_324671077936 /* App_watchOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App_watchOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
FR_340586388409 /* ExtensionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionDelegate.swift; sourceTree = "<group>"; };
FR_363921640403 /* InterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InterfaceController.swift; sourceTree = "<group>"; };
FR_376569054786 /* XPC Service.xpc */ = {isa = PBXFileReference; includeInIndex = 0; path = "XPC Service.xpc"; sourceTree = BUILT_PRODUCTS_DIR; };
FR_377082606829 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
FR_399755008402 /* StaticLibrary_ObjC.a */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = archive.ar; path = StaticLibrary_ObjC.a; sourceTree = BUILT_PRODUCTS_DIR; };
FR_408537768279 /* StandaloneAssets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = StandaloneAssets.xcassets; sourceTree = "<group>"; };
@ -325,6 +386,7 @@
FR_472296042419 /* Framework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Framework.framework; sourceTree = BUILT_PRODUCTS_DIR; };
FR_473000061463 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = "<group>"; };
FR_479281060337 /* Folder */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Folder; sourceTree = SOURCE_ROOT; };
FR_480982116789 /* App_macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App_macOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
FR_481575785861 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
FR_500792082643 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/LocalizedStoryboard.strings; sourceTree = "<group>"; };
FR_505327409380 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@ -334,6 +396,8 @@
FR_570918052822 /* Model.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Model.xcdatamodel; sourceTree = "<group>"; };
FR_587738154368 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
FR_602633703434 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
FR_602719163945 /* XPC_Service.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPC_Service.m; sourceTree = "<group>"; };
FR_602719163962 /* XPC_Service.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPC_Service.h; sourceTree = "<group>"; };
FR_609193904586 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
FR_618687462494 /* iMessageExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = iMessageExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
FR_635802719871 /* base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = base.xcconfig; sourceTree = "<group>"; };
@ -348,6 +412,7 @@
"FR_698230898030-1" /* StaticLibrary_ObjC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StaticLibrary_ObjC.m; sourceTree = "<group>"; };
FR_722239415598 /* TestProjectTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestProjectTests.swift; sourceTree = "<group>"; };
FR_725187762757 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
FR_739513596122 /* XPC_ServiceProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPC_ServiceProtocol.h; sourceTree = "<group>"; };
FR_746876637628 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
FR_748548478992 /* PushNotificationPayload.apns */ = {isa = PBXFileReference; lastKnownFileType = text; path = PushNotificationPayload.apns; sourceTree = "<group>"; };
FR_752394658615 /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Alamofire.framework; sourceTree = "<group>"; };
@ -355,6 +420,7 @@
FR_775316160345 /* SomeFile */ = {isa = PBXFileReference; path = SomeFile; sourceTree = "<group>"; };
FR_783122899910 /* App_iOS_Tests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = App_iOS_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
FR_796781152159 /* Model 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Model 2.xcdatamodel"; sourceTree = "<group>"; };
FR_803921963291 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
FR_815403394914 /* Headers */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Headers; sourceTree = SOURCE_ROOT; };
FR_825232110500 /* App_iOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = App_iOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
FR_830053537293 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
@ -391,6 +457,16 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
FBP_48098211678 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BF_535236390262 /* Alamofire.framework in Frameworks */,
BF_597639300414 /* Framework.framework in Frameworks */,
BF_770495922915 /* StaticLibrary_ObjC.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
FBP_50702349225 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@ -512,6 +588,18 @@
path = App_watchOS;
sourceTree = "<group>";
};
G_3765690547864 /* XPC Service */ = {
isa = PBXGroup;
children = (
FR_803921963291 /* Info.plist */,
FR_151462316179 /* main.m */,
FR_602719163962 /* XPC_Service.h */,
FR_602719163945 /* XPC_Service.m */,
FR_739513596122 /* XPC_ServiceProtocol.h */,
);
path = "XPC Service";
sourceTree = "<group>";
};
G_3997550084026 /* StaticLibrary_ObjC */ = {
isa = PBXGroup;
children = (
@ -540,6 +628,14 @@
path = Framework;
sourceTree = "<group>";
};
G_4793969390202 /* Vendor */ = {
isa = PBXGroup;
children = (
FR_229826849033 /* SomeXPCService.xpc */,
);
path = Vendor;
sourceTree = "<group>";
};
G_5070234922517 /* App_watchOS Extension */ = {
isa = PBXGroup;
children = (
@ -658,6 +754,8 @@
G_6651250437419 /* StandaloneFiles */,
G_3997550084026 /* StaticLibrary_ObjC */,
G_4371791668439 /* StaticLibrary_Swift */,
G_4793969390202 /* Vendor */,
G_3765690547864 /* XPC Service */,
FR_479281060337 /* Folder */,
FR_815403394914 /* Headers */,
FR_232605427418 /* Mintfile */,
@ -677,6 +775,7 @@
FR_783122899910 /* App_iOS_Tests.xctest */,
FR_123503999387 /* App_iOS_UITests.xctest */,
FR_825232110500 /* App_iOS.app */,
FR_480982116789 /* App_macOS.app */,
FR_507023492251 /* App_watchOS Extension.appex */,
FR_324671077936 /* App_watchOS.app */,
FR_525119120469 /* Framework.framework */,
@ -687,6 +786,7 @@
FR_618687462494 /* iMessageExtension.appex */,
FR_399755008402 /* StaticLibrary_ObjC.a */,
FR_437179166843 /* StaticLibrary_Swift.a */,
FR_376569054786 /* XPC Service.xpc */,
);
name = Products;
sourceTree = "<group>";
@ -794,6 +894,21 @@
productReference = FR_324671077936 /* App_watchOS.app */;
productType = "com.apple.product-type.application.watchapp2";
};
NT_376569054786 /* XPC Service */ = {
isa = PBXNativeTarget;
buildConfigurationList = CL_376569054786 /* Build configuration list for PBXNativeTarget "XPC Service" */;
buildPhases = (
SBP_37656905478 /* Sources */,
);
buildRules = (
);
dependencies = (
);
name = "XPC Service";
productName = "XPC Service";
productReference = FR_376569054786 /* XPC Service.xpc */;
productType = "com.apple.product-type.xpc-service";
};
NT_399755008402 /* StaticLibrary_ObjC */ = {
isa = PBXNativeTarget;
buildConfigurationList = CL_399755008402 /* Build configuration list for PBXNativeTarget "StaticLibrary_ObjC" */;
@ -864,6 +979,27 @@
productReference = FR_472296042419 /* Framework.framework */;
productType = "com.apple.product-type.framework";
};
NT_480982116789 /* App_macOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = CL_480982116789 /* Build configuration list for PBXNativeTarget "App_macOS" */;
buildPhases = (
SBP_48098211678 /* Sources */,
CFBP_8368933518 /* CopyFiles */,
FBP_48098211678 /* Frameworks */,
CFBP_4930089528 /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
TD_235580504123 /* PBXTargetDependency */,
TD_629038784927 /* PBXTargetDependency */,
TD_743784992411 /* PBXTargetDependency */,
);
name = App_macOS;
productName = App_macOS;
productReference = FR_480982116789 /* App_macOS.app */;
productType = "com.apple.product-type.application";
};
NT_507023492251 /* App_watchOS Extension */ = {
isa = PBXNativeTarget;
buildConfigurationList = CL_507023492251 /* Build configuration list for PBXNativeTarget "App_watchOS Extension" */;
@ -1011,6 +1147,9 @@
NT_123503999387 = {
TestTargetID = NT_825232110500;
};
NT_480982116789 = {
ProvisioningStyle = Automatic;
};
NT_825232110500 = {
ProvisioningStyle = Automatic;
};
@ -1031,6 +1170,7 @@
NT_825232110500 /* App_iOS */,
NT_783122899910 /* App_iOS_Tests */,
NT_123503999387 /* App_iOS_UITests */,
NT_480982116789 /* App_macOS */,
NT_324671077936 /* App_watchOS */,
NT_507023492251 /* App_watchOS Extension */,
NT_472296042419 /* Framework_iOS */,
@ -1041,6 +1181,7 @@
NT_399755008402 /* StaticLibrary_ObjC */,
NT_437179166843 /* StaticLibrary_Swift */,
AT_445731917037 /* SuperTarget */,
NT_376569054786 /* XPC Service */,
NT_935153865209 /* iMessageApp */,
NT_618687462494 /* iMessageExtension */,
);
@ -1266,6 +1407,15 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
SBP_37656905478 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BF_855988705556 /* XPC_Service.m in Sources */,
BF_304637845091 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
SBP_39975500840 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@ -1305,6 +1455,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
SBP_48098211678 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BF_704149935229 /* Standalone.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
SBP_50702349225 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@ -1384,6 +1542,11 @@
target = NT_825232110500 /* App_iOS */;
targetProxy = CIP_20801090045 /* PBXContainerItemProxy */;
};
TD_235580504123 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = NT_525119120469 /* Framework_macOS */;
targetProxy = CIP_23558050412 /* PBXContainerItemProxy */;
};
TD_288560876254 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = NT_935153865209 /* iMessageApp */;
@ -1399,6 +1562,11 @@
target = NT_399755008402 /* StaticLibrary_ObjC */;
targetProxy = CIP_33710394010 /* PBXContainerItemProxy */;
};
TD_629038784927 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = NT_399755008402 /* StaticLibrary_ObjC */;
targetProxy = CIP_62903878492 /* PBXContainerItemProxy */;
};
TD_667455552356 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = NT_399755008402 /* StaticLibrary_ObjC */;
@ -1414,6 +1582,11 @@
target = NT_399755008402 /* StaticLibrary_ObjC */;
targetProxy = CIP_72152212817 /* PBXContainerItemProxy */;
};
TD_743784992411 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = NT_376569054786 /* XPC Service */;
targetProxy = CIP_74378499241 /* PBXContainerItemProxy */;
};
TD_747418473860 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = NT_472296042419 /* Framework_iOS */;
@ -1639,6 +1812,17 @@
};
name = "Test Release";
};
BC_213267780961 /* Production Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = "XPC Service/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.project.XPCService;
SDKROOT = macosx;
};
name = "Production Debug";
};
BC_240587562436 /* Test Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -1821,6 +2005,27 @@
};
name = "Staging Release";
};
BC_280651168996 /* Production Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
INFOPLIST_FILE = Vendor/SomeXPCService.xpc/Contents/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.project.App-macOS";
SDKROOT = macosx;
};
name = "Production Debug";
};
BC_282993554784 /* Production Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -2457,6 +2662,27 @@
};
name = "Staging Debug";
};
BC_563702409464 /* Staging Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
INFOPLIST_FILE = Vendor/SomeXPCService.xpc/Contents/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.project.App-macOS";
SDKROOT = macosx;
};
name = "Staging Debug";
};
BC_568886047790 /* Production Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -2601,6 +2827,17 @@
};
name = "Test Release";
};
BC_609604761299 /* Staging Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = "XPC Service/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.project.XPCService;
SDKROOT = macosx;
};
name = "Staging Release";
};
BC_609753632568 /* Production Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -2644,6 +2881,27 @@
};
name = "Production Debug";
};
BC_627109222781 /* Production Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
INFOPLIST_FILE = Vendor/SomeXPCService.xpc/Contents/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.project.App-macOS";
SDKROOT = macosx;
};
name = "Production Release";
};
BC_629891546665 /* Production Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -2723,6 +2981,17 @@
};
name = "Test Debug";
};
BC_667304541586 /* Test Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = "XPC Service/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.project.XPCService;
SDKROOT = macosx;
};
name = "Test Debug";
};
BC_669628489596 /* Staging Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -2828,6 +3097,27 @@
};
name = "Production Debug";
};
BC_707904794064 /* Test Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
INFOPLIST_FILE = Vendor/SomeXPCService.xpc/Contents/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.project.App-macOS";
SDKROOT = macosx;
};
name = "Test Release";
};
BC_709947688544 /* Production Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -3171,6 +3461,17 @@
};
name = "Production Debug";
};
BC_823301630526 /* Test Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = "XPC Service/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.project.XPCService;
SDKROOT = macosx;
};
name = "Test Release";
};
BC_823840129404 /* Test Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -3188,6 +3489,17 @@
};
name = "Test Debug";
};
BC_825545455794 /* Staging Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = "XPC Service/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.project.XPCService;
SDKROOT = macosx;
};
name = "Staging Debug";
};
BC_831819337335 /* Production Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -3320,6 +3632,27 @@
};
name = "Test Debug";
};
BC_866352849045 /* Test Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
INFOPLIST_FILE = Vendor/SomeXPCService.xpc/Contents/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.project.App-macOS";
SDKROOT = macosx;
};
name = "Test Debug";
};
BC_879000441352 /* Staging Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -3345,6 +3678,38 @@
};
name = "Staging Debug";
};
BC_906683798476 /* Production Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = "XPC Service/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.project.XPCService;
SDKROOT = macosx;
};
name = "Production Release";
};
BC_914036878229 /* Staging Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
INFOPLIST_FILE = Vendor/SomeXPCService.xpc/Contents/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.project.App-macOS";
SDKROOT = macosx;
};
name = "Staging Release";
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@ -3374,6 +3739,19 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = "";
};
CL_376569054786 /* Build configuration list for PBXNativeTarget "XPC Service" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BC_213267780961 /* Production Debug */,
BC_906683798476 /* Production Release */,
BC_825545455794 /* Staging Debug */,
BC_609604761299 /* Staging Release */,
BC_667304541586 /* Test Debug */,
BC_823301630526 /* Test Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = "";
};
CL_399755008402 /* Build configuration list for PBXNativeTarget "StaticLibrary_ObjC" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@ -3452,6 +3830,19 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = "";
};
CL_480982116789 /* Build configuration list for PBXNativeTarget "App_macOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BC_280651168996 /* Production Debug */,
BC_627109222781 /* Production Release */,
BC_563702409464 /* Staging Debug */,
BC_914036878229 /* Staging Release */,
BC_866352849045 /* Test Debug */,
BC_707904794064 /* Test Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = "";
};
CL_507023492251 /* Build configuration list for PBXNativeTarget "App_watchOS Extension" */ = {
isa = XCConfigurationList;
buildConfigurations = (

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>17G65</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>XPC Service</string>
<key>CFBundleExecutable</key>
<string>XPC Service</string>
<key>CFBundleIdentifier</key>
<string>com.project.XPCService</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>XPC Service</string>
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>9F2000</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
<string>17E189</string>
<key>DTSDKName</key>
<string>macosx10.13</string>
<key>DTXcode</key>
<string>0941</string>
<key>DTXcodeBuild</key>
<string>9F2000</string>
<key>XPCService</key>
<dict>
<key>ServiceType</key>
<string>Application</string>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict/>
<key>files2</key>
<dict/>
<key>rules</key>
<dict>
<key>^Resources/</key>
<true/>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^.*</key>
<true/>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^[^/]+$</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>XPC Service</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>XPCService</key>
<dict>
<key>ServiceType</key>
<string>Application</string>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,5 @@
#import <Foundation/Foundation.h>
#import "XPC_ServiceProtocol.h"
@interface XPC_Service : NSObject <XPC_ServiceProtocol>
@end

View File

@ -0,0 +1,10 @@
#import "XPC_Service.h"
@implementation XPC_Service
- (void)upperCaseString:(NSString *)aString withReply:(void (^)(NSString *))reply {
NSString *response = [aString uppercaseString];
reply(response);
}
@end

View File

@ -0,0 +1,9 @@
#import <Foundation/Foundation.h>
// The protocol that this service will vend as its API. This header file will also need to be visible to the process hosting the service.
@protocol XPC_ServiceProtocol
// Replace the API of this protocol with an API appropriate to the service you are vending.
- (void)upperCaseString:(NSString *)aString withReply:(void (^)(NSString *))reply;
@end

View File

@ -0,0 +1,41 @@
#import <Foundation/Foundation.h>
#import "XPC_Service.h"
@interface ServiceDelegate : NSObject <NSXPCListenerDelegate>
@end
@implementation ServiceDelegate
- (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection {
// This method is where the NSXPCListener configures, accepts, and resumes a new incoming NSXPCConnection.
// Configure the connection.
// First, set the interface that the exported object implements.
newConnection.exportedInterface = [NSXPCInterface interfaceWithProtocol:@protocol(XPC_ServiceProtocol)];
// Next, set the object that the connection exports. All messages sent on the connection to this service will be sent to the exported object to handle. The connection retains the exported object.
XPC_Service *exportedObject = [XPC_Service new];
newConnection.exportedObject = exportedObject;
// Resuming the connection allows the system to deliver more incoming messages.
[newConnection resume];
// Returning YES from this method tells the system that you have accepted this connection. If you want to reject the connection for some reason, call -invalidate on the connection and return NO.
return YES;
}
@end
int main(int argc, const char *argv[])
{
// Create the delegate for the service.
ServiceDelegate *delegate = [ServiceDelegate new];
// Set up the one NSXPCListener for this service. It will handle all incoming connections.
NSXPCListener *listener = [NSXPCListener serviceListener];
listener.delegate = delegate;
// Resuming the serviceListener starts this service. This method does not return.
[listener resume];
return 0;
}

View File

@ -22,6 +22,19 @@ targets:
legacy:
toolPath: /usr/bin/true
passSettings: true
App_macOS:
type: application
platform: macOS
attributes:
ProvisioningStyle: Automatic
sources:
- path: StandaloneFiles/Standalone.swift
- path: Vendor/SomeXPCService.xpc
dependencies:
- target: Framework_macOS
- target: XPC Service
App_iOS:
type: application
platform: iOS
@ -154,6 +167,13 @@ targets:
sources: App_iOS_UITests
dependencies:
- target: App_iOS
XPC Service:
type: xpc-service
platform: macOS
sources:
- path: XPC Service
schemes:
Framework:
build: