XPC 服务未从 Xcode 源代码编辑器扩展启动(`仍然很忙`)

Posted

技术标签:

【中文标题】XPC 服务未从 Xcode 源代码编辑器扩展启动(`仍然很忙`)【英文标题】:XPC Service not launching from Xcode Source Editor Extension (`still busy`) 【发布时间】:2021-05-14 20:43:27 【问题描述】:

我可以set up my Xcode Source Editor Extension to work with XPC。

当我通过 Xcode 运行应用程序以进行调试时,一切正常。我的 XPC 扩展程序已启动。

然后我存档并分发项目(用于开发)。安装扩展并调用命令后,XPC 服务永远不会启动。我在活动监视器中没有看到它。

此外,Xcode 扩展只是显示错误:

“Foo”命令仍然很忙。

为什么在debug模式下可以正确打开XPC服务,但是我分发应用时,却无法启动XPC服务?

我的 XPC 扩展(和应用)依赖于 shared framework I created。不确定这是否与问题有关。

【问题讨论】:

【参考方案1】:

调试此问题的最佳方法不一定是查看控制台消息,而是查看控制台应用程序中的崩溃报告。当我去那里时,我注意到 XPC 服务每次运行时都会崩溃。

崩溃是:

Termination Reason:    DYLD, [0x1] Library missing

这让我意识到我应该仔细检查upgrading from Objective-C XPC to Swift XPC 时使用的设置。特别是,我感到困惑的部分是the article 说要设置Runtime Search Paths: @loader_path/../../../../Frameworks。事实证明它应该被添加,而不是从列表中删除。

我将 XPC 的运行路径搜索路径从以下位置切换:

$(inherited)
@loader_path/../../../../Frameworks

$(inherited)
@executable_path/../Frameworks
@loader_path/../Frameworks
@loader_path/../../../../Frameworks

XPC 服务不再崩溃。

【讨论】:

以上是关于XPC 服务未从 Xcode 源代码编辑器扩展启动(`仍然很忙`)的主要内容,如果未能解决你的问题,请参考以下文章

你可以在插件中运行 XPC 服务吗? (例如,打印对话框扩展插件)

在 Xcode 中添加命令行目标作为 XPC 服务器的功能

macOS XPC 服务未启动

Xcode 5 上的 XPC 测试包

通过 XPC 或 MACH 在 OSX 上启动服务

XPC 服务:提高工作线程上的堆栈大小