我有一个在xCode 5中创建的应用程序,其中包含一个捆绑的可执行文件.我正在尝试将应用程序提交到Mac App Store,但是当我提交它时,它会失败并显示以下消息:
未启用应用程序沙箱 – 以下可执行文件必须在权利属性列表中包含布尔值为true的“com.apple.security.app-sandBox”权利.有关沙盒应用程序的更多信息,请参阅App SandBox页面.
我创建了一个权利文件(EXECUTABLE_NAME.entitlements),其中包含’com.apple.security.app-sandBox’键,其值为’true’…
<?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/> </dict> </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>
它本身就不会完成这项工作,实际上对我执行以下操作的文件进行代码签名:
>归档应用程序
>打开xCode的管理器窗口
>右键单击存档并选择“在Finder中显示”以获取其位置
>使用Terminal.app,导航到其位置,然后在应用程序内部
捆绑/内容/资源/
>运行以下命令:
codesign -f -s“$YOUR_CERTIFICATE_HERE” – entitlements“$THE_ENTITLEMENTS_PLIST”“$THE_EXECUTABLE”
$YOUR_CERTIFICATE_HERE使用您的第三方Mac开发者应用程序证书