XPCServices不更新代码

时间:2016-01-06 15:29:38

标签: xcode macos osx-elcapitan launchd

我使用由loginItems运行的xpcservices为os x应用程序创建项目。这意味着该服务建立在应用程序的路径中:{APP_NAME}.app/Contents/Library/LoginItems 谁负责运行该服务是主要的应用程序:

NSXPCConnection *connection = [[NSXPCConnection alloc] initWithLoginItemName:@"{SERVICE_NAME}.app" error:&error]; 

我使用了类:来自apple的docs示例的NSXPCConnection + LoginItem.h: https://developer.apple.com/library/mac/samplecode/AppSandboxLoginItemXPCDemo/Listings/iDecide_NSXPCConnection_LoginItem_h.html

问: 为什么当我更新服务代码(甚至只是日志)时它没有改变?

你应该知道:

我删除了与此项目和服务相关的所有文件 (我没有使用LaunchAgents或LaunchDaemons文件夹)

我确实删除了以下服务:launchctl remove {SERVICE_LABLE}

我使用控制台应用程序来查看我正在运行的版本之间的差异

我甚至买了“cleanMyMac3.app”并重新启动,但仍然从应用程序的Xcode运行,仍然显示以前版本的日志。

我搜索了与服务名称相关的系统上的文件,我发现创建的文件夹很少,我删除了它们:

  1. 〜/ Library / Group Containers / {SERVICE_NAME}
  2. 〜/库/容器/ {SERVICE_NAME}
  3. 〜/库/缓存/ {SERVICE_NAME}
  4. 〜/ Library / Saved Application State / {SERVICE_NAME}
  5. 我不是沙箱工作

1 个答案:

答案 0 :(得分:0)

您是否正确引用了服务(XPC服务)?

即。 (根据苹果示例)

`NSXPCConnection *connection = [[NSXPCConnection alloc] initWithLoginItemName:@"XYZABC1234.com.example.iDecideHelper.app" error:&error];`

此外,由于此示例已经过时,如果您遍历XPC要求,您会注意到需要进行一些更改:

  1. 包含项目(iOS或OSX应用程序)和XPC服务应用程序都需要沙箱化
  2. 理想情况下,XPC服务应命名为:com.theMainApp.identifier.com.whateverServiceName。
  3. 因此,在Apple示例中,您列出的IDecideHelpers标识符为:com.example.iDecide.WhateverServiceName。 iDecide(主应用程序)将是com.example.iDecide