Merge pull request #368 from brentleyjones/automatically-copy-xpc

Automatically copy XPC Services to correct location
This commit is contained in:
Brentley Jones
2018-08-16 07:53:30 -05:00
committed by GitHub
14 changed files with 680 additions and 1 deletions
+1
View File
@@ -19,6 +19,7 @@
- Fixed `options.xcodeVersion` not being parsed [348](https://github.com/yonaskolb/XcodeGen/pull/348) @brentleyjones
- Fixed non-application targets using `carthage copy-frameworks` [361](https://github.com/yonaskolb/XcodeGen/pull/361) @brentleyjones
- Set `xcdatamodel` based on `xccurrentversion` if available [364](https://github.com/yonaskolb/XcodeGen/pull/364) @rpassis
- XPC Services are now correctly copied [368](https://github.com/yonaskolb/XcodeGen/pull/368) @brentley
#### Changed
- Improved linking for `static.library` targets [352](https://github.com/yonaskolb/XcodeGen/pull/352) @brentleyjones
+5
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
+4 -1
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(
@@ -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
}
@@ -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 = (
@@ -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>
Binary file not shown.
@@ -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>
@@ -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>
@@ -0,0 +1,5 @@
#import <Foundation/Foundation.h>
#import "XPC_ServiceProtocol.h"
@interface XPC_Service : NSObject <XPC_ServiceProtocol>
@end
@@ -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
@@ -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
@@ -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;
}
+20
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: