【问题标题】:Mac OS app, sandbox with command line tool?Mac OS 应用程序,带有命令行工具的沙箱?
【发布时间】:2012-08-03 00:45:31
【问题描述】:

我制作了一个包含命令行工具的应用程序。我已启用该应用程序的沙箱,并测试它是否有效。我还对应用程序和命令行工具进行了代码签名。

但是当我将应用程序上传到 iTunes 时,我收到了一封电子邮件,告诉我“应用程序沙盒未启用”。

显然我需要将密钥com.apple.security.app-sandbox 的授权文件设置为true 值,并列出可执行文件:/Contents/MacOS/myApp 和/contents/Frameworks/x86/myCommandLineTool。

我确定我已经在 Xcode 中启用了沙盒,所以我认为问题出在命令行工具上。

如何为命令行工具启用沙盒?或者是否有一个特定的文件夹我应该放置该工具?欢迎任何建议 - 我已经为此困扰了几天。

【问题讨论】:

  • 感谢 andrewdotnich 的编辑。

标签: macos sandbox command-line-tool


【解决方案1】:

我遇到了同样的问题,经过一些搜索、反复试验,这对我有用:

  1. 创建一个授权文件 - 对我来说,它只是将 com.apple.security.inherit 设置为 YES。我在 xcode 本身中创建了这个文件。

  2. 现在使用以下命令对该命令行工具进行签名:

    codesign --entitlements ./entitlements.plist -s "copy & paste your certificate from keychain" ./commandlinetool   
    
  3. 为了确定,请使用以下命令进行检查:

    codesign --display --entitlements - ./commandlinetool   
    
  4. 此工具已包含在项目中。所以只需编译、存档和提交

状态现在是“等待审核”。

【讨论】:

  • 这让我很开心!谢谢!
  • 我不确定从钥匙串复制粘贴如何工作。当我右键单击并选择复制时,我的剪贴板中没有任何内容。有什么明显的我忽略了吗?
  • @BenWest 从字面上复制证书的名称。例如:“Mac 开发者:John Smith (1231231231)”
  • 我要补充的另一件事是确保您的命令行工具不在资源文件夹中。经过很多努力,我在阅读代码签名指南后发现工具应该安装/位于特定位置,即 MacOS、Helpers 等文件夹。希望这是一个有价值的补充。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 2015-03-20
  • 2023-03-15
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 2017-02-16
相关资源
最近更新 更多