Mac OS 应用,使用命令行工具进行沙箱操作?

27

我做了一个包含命令行工具的应用程序。我已经启用了应用程序的沙盒,并测试了它的工作。我也对应用程序和命令行工具进行了代码签名。

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

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

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

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


感谢andrewdotnich的编辑。 - dinosaur
1个回答

27

我遇到了同样的问题,并经过一番搜索、尝试和错误,这是对我有效的方法:

  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. 这个工具已经包含在项目中。所以只需要编译、打包和提交即可。

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


这让我的一天变得更美好了!谢谢! - SevenBits
我不确定如何从钥匙串中复制粘贴。当我右键单击并选择复制时,我的剪贴板中没有任何内容。我是否忽略了什么明显的东西? - Ben West
@BenWest 字面上复制证书的名称。例如:“Mac 开发者:John Smith(1231231231)” - kjb
我想再补充一件事,那就是确保你的命令行工具不要位于资源文件夹中。经过长时间的挣扎后,我在阅读代码签名指南后发现,工具应该安装/位于特定位置,例如MacOS、Helpers等文件夹中。希望这是一个有价值的补充。 - Khushneet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接