objective-c - cocoa 沙盒应用程序 : Spawn FFMPEG

标签 objective-c cocoa nstask mac-app-store appstore-sandbox

我有一个应用程序,它使用 FFMPEG 和 FFPROBE 对用户可以使用我的应用程序打开的视频执行一些任务。

对于非沙盒应用程序,一切正常,但是当我的应用程序在沙盒中运行时,FFPROBE 似乎无法启动。 控制台显示以下内容:

08.06.15 12:27:55,803 secinitd[281]: ffprobe[4049]: registration request failed: (0x11, 0x0) Container object initialization failed. failed to get bundleid for app "/Users/Alex/.../ffprobe"

此消息中提到的 ffprobe 路径指向应用程序包中的 MacOS 目录(构建阶段将这两个二进制文件复制到可执行目录中)。

我进行了大量搜索,发现了一些有关权利的提示。当然,我的沙盒应用程序有其权利,并且在构建我的应用程序时,它会被签名(使用 --deep 签名标志)。它甚至通过了 App Store 的技术权利检查。

现在我很困惑,想知道为什么我的应用程序无法启动 FFPROBE(和 FFMPEG)。

有人知道吗?

最佳答案

看来我已经找到解决办法了。我不知道所有这些步骤是否都是必要的,但这是我已经尝试过的以及似乎(!)有效的方法:

  1. 我添加了一个权利文件,其中包含 true对于按键com.apple.security.inheritcom.apple.security.app-sandbox
  2. 我添加了 plist文件为每个使用的二进制文件并填写 key CFBundleNameCFBundleIdentifier具有合适的值(我不知道这一步是否有必要)
  3. 我添加了 Run Script执行 codesign -f -s "your certificate" --entitlements ./ffmpeg.entitlements ./Build/Intermediates/ArchiveIntermediates/App\ Store/InstallationBuildProductsLocation/Applications/<my app>/Contents/MacOS/ffmpeg 的构建阶段对于每个使用的二进制文件。

当尝试将应用程序提交到 Mac App Store 时,这些步骤会产生合适的权利,并导致正确使用嵌入式二进制文件(至少在我的开发 Mac 和一些同事的 Mac 上)。

关于objective-c - cocoa 沙盒应用程序 : Spawn FFMPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30711024/

相关文章:

ios - 调用 sqlite3_column_type 返回 SQLITE_INTEGER 用于仅包含导致整数溢出的数字的 STRING 列

objective-c - 计算字符串在另一个字符串中出现的次数

objective-c - windows关闭时如何退出 cocoa 应用程序?

cocoa - 获取管理员权限以使用 rm 从 Cocoa 应用程序删除文件

objective-c - 椰子足 : pod setup failed with fatal error

ios - NSNumberFormatter 的准确性问题

ios - 未实现委托(delegate)方法导致崩溃

objective-c - 如何使用 NSScanner 解析 Cocoa 中制表符分隔的字符串?

iphone - NSTask实时监控输出

ios - Objective-C,NSTask缓冲区限制