macOS应用公证失败:二进制签名无效问题求助
问题分析与解决方案
核心原因
双架构签名无效的根源在于FlutterMacOS.framework根目录存在未密封内容——这违反了苹果代码签名规则,破坏了整个App的签名完整性,导致公证时两个架构的二进制都被判定为无效签名。
解决步骤
1. 清理嵌入式框架的冗余文件
进入RazorCode.app/Contents/Frameworks/FlutterMacOS.framework目录,删除所有不属于框架标准结构的文件/文件夹,比如:
- 临时构建残留(如
.DS_Store、build文件夹、日志文件) - 非标准框架组件(如额外脚本、测试文件)
2. 按正确顺序重新签名
苹果官方不推荐使用--deep递归签名,需遵循从内到外的签名顺序:
- 先签名嵌入式框架:
codesign -s "你的开发者证书ID" --force --preserve-metadata=identifier,entitlements,flags RazorCode.app/Contents/Frameworks/FlutterMacOS.framework - 再签名主App:
codesign -s "你的开发者证书ID" --force --preserve-metadata=identifier,entitlements,flags RazorCode.app
3. 验证签名有效性
运行以下命令确认签名无错误:
codesign -vvv RazorCode.app
确保输出中不再出现unsealed contents present相关提示。
4. 重新打包并提交公证
使用苹果推荐的命令生成合规归档包:
ditto -c -k --sequesterRsrc --keepParent RazorCode.app RazorCode.zip
之后重新提交该zip包进行公证。
内容的提问来源于stack exchange,提问作者Daniel Kang
相关产品推荐
相关产品推荐

