如何运行使用Xcode 5.1构建的QuickLook插件?

时间:2014-09-10 07:50:30

标签: xcode macos plugins osx-mavericks

在使用Xcode 5.1构建在OSX Mavericks上时,我无法运行我的QuickLook插件。插件的内容非常简单(< 20行代码)。它只是进行系统调用,并将结果字符串发送到QLPreviewRequestSetDataRepresentation(..)

我最初使用Xcode 4.6在Snow Leopard或Mt Lion上制作了这个项目。我能够编译和运行项目没问题。当我迁移到Mavericks时,我能够将旧的.qlgenerator文件复制到~/Library/QuickLook,插件工作正常。但是现在我需要用Xcode 5.1重新编译项目。该项目在启动新的QuickLook插件项目时使用Xcode提供的默认设置,就像我提到的那样,它构建成功。据我所知,编译的二进制文件似乎很好。

我按照此问题中的建议设置调试程序:Debugging Quicklook Plugin in Xcode 4.6。但是在运行插件时,我得到了这个输出:

Testing Quick Look preview with files:
~/my-test-file.nc
2014-09-09 16:52:43.071 qlmanage[46315:303] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x8c27, name = 'com.apple.tsm.portname'
See /usr/include/servers/bootstrap_defs.h for the error codes.
2014-09-09 16:52:43.074 qlmanage[46315:303] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x8f4b, name = 'com.apple.CFPasteboardClient'
See /usr/include/servers/bootstrap_defs.h for the error codes.
2014-09-09 16:52:43.074 qlmanage[46315:303] Failed to allocate communication port for com.apple.CFPasteboardClient; this is likely due to sandbox restrictions

此外,如果我将.qlgenerator文件(使用Xcode 5.1编译)复制到~/Library/QuickLook,我无法获取qlmanage来获取新生成器。

我也发现了这个问题:QuickLook Plugin Failing with sandboxing error,似乎可能是相关的。我读了一下Apple的Sandboxing应该如何工作,但我无法弄清楚如何为QuickLook插件添加权利。我无法找到"功能" Apple的文档中提到的用于添加权利的小组。

编辑:这似乎也是相关的:sandbox custom qlgenerator (Quick look) plugin

1 个答案:

答案 0 :(得分:1)

回答自己。通过使用qlamange和一些NSLog语句的一些额外命令行选项,我发现使用Xcode 5.1编译时的插件实际上工作正常,但我遇到{{1}的问题项目的UTI文件中的字符串。这阻止了Info.plist能够获取插件。

事实证明,修复了UTI字符串,当插件通过Xcode运行时,我仍然在Xcode的调试面板中得到沙盒错误,但该插件工作正常。当插件安装在qlmanage并正确注册~/Library/Quicklook时,系统日志中不会显示任何错误,因此所有错误都显示正常。