MacOS平台Unity打包AppStoreConnect提交遇Code 1091签名权限问题
解决MacOS Unity应用上传AppStoreConnect时的代码签名权限矛盾问题
我之前也碰到过这个让人头疼的矛盾错误——加沙箱权限说不支持,去掉又要求必须启用,其实核心问题出在证书类型选择和Unity打包配置的配合上,下面是一步步的解决方法:
1. 确认Unity打包的核心配置
首先回到Unity的Player Settings,确保macOS的签名和权限设置正确:
- 打开
Player Settings > macOS > Signing & Capabilities - 一定要勾选Enable App Sandbox(Mac App Store的应用强制要求开启沙箱,Unity会自动生成符合要求的权限文件,不要手动修改这个文件!)
- 选择正确的签名身份:必须是
Mac App Distribution证书(而不是用于外部分发的Developer ID Application证书),同时匹配对应的Mac App Store类型的Provisioning Profile(要确保Profile里已启用沙箱权限)
2. 重新构建应用
按照上述配置,重新构建你的Mac应用,得到.app文件。这一步Unity会自动生成正确的.entitlements权限文件,里面的com.apple.security.app-sandbox值会是true,完全符合AppStore的要求。
3. (可选)手动重新签名(如果Unity打包签名有问题)
如果打包后的应用签名有异常,可以用命令行重新签名,确保权限文件和签名关联正确:
codesign --force --sign "Mac App Distribution: 你的姓名 (TeamID)" --entitlements 你的应用名.entitlements 你的应用名.app
4. 打包成.pkg文件
用productbuild命令打包成符合AppStore要求的安装包,注意签名要用Mac Installer Distribution证书:
productbuild --component 你的应用名.app /Applications --sign "Mac Installer Distribution: 你的姓名 (TeamID)" 你的应用名.pkg
5. 重新验证.pkg文件
最后用altool验证,确保使用正确的Apple ID和应用专用密码:
xcrun altool --validate-app -f 你的应用名.pkg -t macos -u "你的Apple ID邮箱" -p "你的应用专用密码"
为什么会出现这个矛盾错误?
大概率是你之前误用了Developer ID证书来签名Mac App Store的包——Developer ID是用于外部分发(非AppStore)的应用,这类应用不需要沙箱权限;而Mac App Store的应用必须用Mac App Distribution证书,且强制要求开启沙箱,两种证书的权限规则完全不同,才会导致加沙箱说不支持、不加又要求启用的矛盾。
内容的提问来源于stack exchange,提问作者Hadrien
相关产品推荐
相关产品推荐

