您的位置:
首页
>>
SoftHub关联区
>> 主题: [xcode]Sandboxed 设置之后还是提示的手工处理方法【未证实】[更新,找到一种情况下的解决办法][png图片引发的异常]
[最新]
[回主站]
[xcode]Sandboxed 设置之后还是提示的手工处理方法【未证实】[更新,找到一种情况下的解决办法][png图片引发的异常]
clq
浏览(315) -
2024-02-08 17:38:07 发表
编辑
关键字:
[2024-02-12 11:53:34 最后更新]
[xcode]Sandboxed 设置之后还是提示的手工处理方法【未证实】[更新,找到一种情况下的解决办法][png图片引发的异常] -------------------------------------------------------- 实测某些网络上的 svg 导出下载的 png 会导致 sandbox 签名失败。我的是 xcode15 不知道是否是 xcode 的 bug。 解决办法倒也简单,在 macos 中直接打开旋转一圈再保存就可以了。 -------------------------------------------------------- 在 Sandboxed Mac App 中嵌入第三方可执行文件 qtcreatorlinux 于 2013-09-17 15:35:57 发布 阅读量1.8k 收藏 1 点赞数 分类专栏: xcode xcode 专栏收录该内容 52 篇文章 0 订阅 订阅专栏 之前开源了 一个 gitstats 的 GUI 应用 GitStatX,在提交到 GitHub (GitStatX) 之后,又准备提交到 Mac App Store。 在提交到 Mac App Store 之后,出现了一些问题,程序中包含的第三方可执行文件没有签名,导致苹果拒绝了提交的程序包: App sandbox not enabled – The following executables must include the “com.apple.security.app-sandbox” entitlement with a Boolean value of true in the entitlements property list. Refer to the App Sandbox page for more information on sandboxing your app. GitStatX.app/Contents/Resources/git/bin/git GitStatX.app/Contents/Resources/gnuplot/gnuplot 但是 GitStatX 所包含的 git 以及 gnuplot,并不是我程序中的代码,也没有 Xcode 工程去使用一个 entitlements 文件来指定它为启用 sandbox 状态。 所幸在网上搜索的时候,找到了可以使用 codesign 工具来进行签名的方法。 检查可执行文件是否启用 sandbox codesign --display --entitlements - ./commandlinetool 给可执行文件签名并启用 sandbox 先在命令行工具同目录创建一个 entitlements.plist: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.security.inherit</key> <true/> </dict> </plist> 这里设置了 com.apple.security.app-sandbox 为 true 来启用 sandbox。 然后使用 codesign 进行签名: codesign -s "3rd Party Mac Developer Application: Your Name" --entitlements ./entitlements.plist ./commandlinetool 记得把 “3rd Party Mac Developer Application: Your Name” 替换为实际的证书名称。 问题 在给 gnuplot 签名之后,提交到 Mac App Store,苹果还是会自动验证并发邮件说 gnuplot 没有签名,于是在本地直接导出 GitStatX.app,并检查了一下,发现 gnuplot 的 entitlements 又没有了,但是 git 的 entitlements 还是保留的。在 gnuplot 同目录下,有一个 _CodeSignature 目录,可能是在打包的时候会自动处理。 为了避免这个问题,我就把 gnuplot 也放到了一个 bin 目录下,然后再打包并检查,发现 gnuplot 已经是正确签名并且保留有 entitlements 的了。 当然,GitStatX 最终也正确提交到 Mac App Store,并且程序进入了 Waiting For Review 状态。 参考资料 Mac OS app, sandbox with command line tool? Checking Code Signing and Sandboxing Status in Code Entitlement Key Reference
本帖子属于以下条目()
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.