You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity Cloud Build构建Mac应用签名后仍触发ITMS-90296沙箱未启用错误

问题

我用Unity Cloud Build制作了一款MacOS应用,想通过App Store Connect签名分发。下载编译后的.app文件后,用codesign给所有相关文件签名,签名运行时二进制文件也用了授权文件。通过codesign -d --entitlements :-命令确认com.apple.security.app-sandbox已设为true,但用productbuild创建.pkg文件并通过Transporter上传后,收到App Store Connect的邮件提示ITMS-90296: App sandbox not enabled,不知道怎么调试,求解决思路(需通过Unity编辑器、Unity云构建或MacOS CLI实现)。

本地codesign验证结果

Mac-mini:Downloads mini1$ codesign -d --entitlements :- MyApp.app
Executable=/Users/mini1/Downloads/MyApp.app/Contents/MacOS/MyApp
warning: Specifying ':' in the path is deprecated and will not work in a future release
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://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.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>

App Store Connect错误提示

ITMS-90296: App sandbox not enabled - 以下可执行文件必须在授权属性列表中包含值为true的com.apple.security.app-sandbox授权:[[myapp.pkg/Payload/myapp.app/Contents/MacOS/myapp]],请参考App Sandbox相关文档了解更多沙箱配置信息。

解决思路

1. 检查Unity端的沙箱配置(编辑器/云构建)

  • Unity编辑器中,打开Player Settings → MacOS → Other Settings,确保Enable App Sandbox选项已勾选。同时确认这里配置的授权列表包含com.apple.security.app-sandbox,其他必要授权(比如网络权限)也需正确设置。
  • 若使用Unity Cloud Build,在构建配置的Advanced选项中同步编辑器的Player Settings配置,或直接在云构建的环境变量/配置中指定沙箱启用参数,避免本地配置与云构建不一致。
  • 注意:Unity构建时会自动生成授权文件,若手动修改过授权文件,需确保Unity构建流程不会覆盖自定义配置,或直接在Unity中配置好所有授权,让构建过程自动生成正确的entitlements文件。

2. 重新签名时的细节检查(MacOS CLI)

  • 签名时,确保对整个.app包而非仅二进制文件签名,命令示例:
    codesign --deep --force --sign "你的开发者证书ID" --entitlements "你的授权文件.plist" MyApp.app
    
    用--deep参数递归签名包内所有嵌套的可执行文件和框架,避免遗漏子组件的签名授权。
  • 签名完成后,除主二进制文件外,还要检查.app包内所有嵌套可执行文件(比如Plugins目录下的框架、辅助工具),用命令逐个验证:
    codesign -d --entitlements :- MyApp.app/Contents/Frameworks/SomeFramework.framework/Versions/A/SomeFramework
    
    确保每个可执行文件都带有正确的沙箱授权。
  • 创建.pkg前,重新验证整个.app的签名完整性:
    spctl -a -t exec -vv MyApp.app
    
    确认输出显示accepted且包含sandbox enabled相关信息。

3. productbuild打包的正确性验证

  • 用productbuild打包时,确保指定了正确的授权和签名参数,或在打包前确认.app已完全签名正确。可以用pkgutil解压上传的.pkg文件,重新验证其中的.app文件:
    pkgutil --expand myapp.pkg extracted_pkg
    codesign -d --entitlements :- extracted_pkg/Payload/myapp.app/Contents/MacOS/myapp
    
    排查解压后的二进制文件是否还保留沙箱授权,排除打包过程中文件损坏或签名丢失的问题。
  • 尝试用xcodebuild替代productbuild生成符合App Store要求的包,命令示例:
    xcodebuild -create-xcframework -framework MyApp.app -output MyApp.xcframework
    xcodebuild -exportArchive -archivePath MyApp.xcarchive -exportPath ./ -exportOptionsPlist ExportOptions.plist
    
    其中ExportOptions.plist需配置正确的分发类型和授权信息。

4. 证书与授权的匹配检查

  • 确认使用的开发者证书是Mac App Store分发证书,而非开发证书,App Store只接受分发证书签名的包。
  • 授权文件中的com.apple.application-identifier和com.apple.developer.team-identifier必须与证书的Team ID和App ID完全匹配,避免授权与证书不匹配导致沙箱验证失败。

内容的提问来源于stack exchange,提问作者Teun Ververs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:53:18