在使用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。
答案 0 :(得分:1)
回答自己。通过使用qlamange
和一些NSLog
语句的一些额外命令行选项,我发现使用Xcode 5.1编译时的插件实际上工作正常,但我遇到{{1}的问题项目的UTI
文件中的字符串。这阻止了Info.plist
能够获取插件。
事实证明,修复了UTI字符串,当插件通过Xcode运行时,我仍然在Xcode的调试面板中得到沙盒错误,但该插件工作正常。当插件安装在qlmanage
并正确注册~/Library/Quicklook
时,系统日志中不会显示任何错误,因此所有错误都显示正常。