从命令行守护程序使用 MLMediaLibrary 时出现 XPC 错误
Posted
技术标签:
【中文标题】从命令行守护程序使用 MLMediaLibrary 时出现 XPC 错误【英文标题】:XPC error when using MLMediaLibrary from command line daemon 【发布时间】:2015-03-12 14:46:08 【问题描述】:我正在编写一个命令行守护程序来从 iPhoto 读取图像。
我可以从使用 Xcode 项目创建工具创建的成熟 Cocoa 应用程序中初始化并加载 MLMediaLibrary
。但是,当我尝试从命令行工具(也在 Xcode 中创建)执行相同操作时,Xcode 控制台窗口中出现以下错误:
MLMediaLibrary error obtaining remote object proxy: Error Domain=NSCocoaErrorDomain Code=4097 "Couldn’t communicate with a helper application."
如何从命令行工具访问MLMediaLibrary
?
【问题讨论】:
【参考方案1】:为了访问MLMediaLibrary
,您的应用程序必须经过沙盒处理和代码签名。
更新
您似乎还必须在 .entitlements 文件中添加一些永久只读访问权限。
如果您想访问照片、iPhoto 或 Aperture 图库:
<key>com.apple.security.assets.pictures.read-only</key>
<true/>
如果您想访问 iMovie 和 FinalCut:
<key>com.apple.security.assets.movies.read-only</key>
<true/>
如果您想访问 iTunes 或 Logic:
<key>com.apple.security.assets.music.read-only</key>
<true/>
您可以在此处了解我对 MediaLibrary 框架的糟糕体验: https://devforums.apple.com/message/1125821
【讨论】:
谢谢,这看起来很有帮助!一旦我有机会检查它是否适合我,我就会接受。 是否可以在不对我的应用程序进行沙盒处理的情况下使用 MediaLibrary.framework,因为我必须访问一些外部存储设备(闪存驱动器等)。在这里查看我的问题:***.com/questions/40901811/…【参考方案2】:我不认为康斯坦丁的说法是正确的:In order to access MLMediaLibrary your application has to be sandboxed and codesigned.
根据我的测试,我可以在我的应用程序中使用MediaLibrary.framework
,并且我的应用程序没有代码签名,它没有权利文件,因此它显然不是沙盒应用程序。
【讨论】:
以上是关于从命令行守护程序使用 MLMediaLibrary 时出现 XPC 错误的主要内容,如果未能解决你的问题,请参考以下文章