从命令行守护程​​序使用 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 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用PM2守护Nodejs命令行程序

定时任务程总结

显示从 ASP.NET MVC 中的命令行进程获取的数据

LINUX守护进程

Docker命令行与守护进程如何交互?

Gradle命令行操作