dmi*_*mid 8 xcode code-signing
我有一个在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>
Run Code Online (Sandbox Code Playgroud)
...但应用程序仍然失败.
我错过了什么(或者我做错了什么)才能将捆绑的可执行文件代码签名?
dmi*_*mid 11
我通过以下方式解决了这个问题:
1).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>
Run Code Online (Sandbox Code Playgroud)
它本身就不会完成这项工作,实际上对我执行以下操作的文件进行代码签名:
运行以下命令:
codesign -f -s"$ YOUR_CERTIFICATE_HERE" - entitlements"$ THE_ENTITLEMENTS_PLIST""$ THE_EXECUTABLE"
对于$YOUR_CERTIFICATE_HERE
使用第三方Mac开发者的应用证书
完成此操作后,应用程序应上传到iTunes Connect,您将能够在"二进制详细信息"部分下看到相关的代码签名信息.
@dmid的答案是正确的并且有效.
但它可能更简单.假设可执行文件是myexe
:
创建myexe.entitlements
文件:
<?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>
Run Code Online (Sandbox Code Playgroud)
运行命令:
codesign -f -s "$YOUR_CERTIFICATE_HERE" --entitlements "myexe.entitlements" "myexe"
Run Code Online (Sandbox Code Playgroud)
完成!
归档时间: |
|
查看次数: |
2314 次 |
最近记录: |