如何对 macOS 应用进行代码签名?
macOS 终端代码签名问题解答
- 首先直接回答你的两个核心疑问:
- 通过终端完成代码签名的说法完全属实,macOS 原生提供了命令行签名工具,无需操作 Xcode 即可完成全流程签名。
- 终端签名不仅支持 .pkg 安装包,也完全适配已编译完成的 .app 格式应用,同时还支持 dmg、插件、内核扩展等多种二进制产物的签名需求。
基础操作步骤
第一步:导入证书到钥匙串
双击你拿到的 distribution.cer 文件,按照提示导入到当前用户的「登录」钥匙串或者「系统」钥匙串即可。导入完成后打开「钥匙串访问」应用,在左侧「我的证书」分类中找到刚导入的分发证书,复制证书的完整名称,格式一般为 Apple Distribution: 主体名称 (团队ID)。
第二步:签名 .app 应用
打开终端执行以下命令:
codesign --force --deep --sign "你复制的证书完整名称" /path/to/你的应用.app
参数说明:
--force:覆盖应用原有的旧签名--deep:递归签名 .app 包内所有嵌套的二进制、框架、插件等内部组件,避免部分内容未签名触发系统拦截--sign:指定用于签名的证书
第三步:验证签名有效性
执行以下命令校验签名是否成功:
codesign -vvv /path/to/你的应用.app
如果返回结果包含 valid on disk、satisfies its Designated Requirement 字样,即说明签名有效。
可选:签名 .pkg 安装包
如果需要对 pkg 安装包签名,使用 productsign 命令即可:
productsign --sign "你复制的证书完整名称" /path/to/未签名的安装包.pkg /path/to/输出的签名后安装包.pkg
注意:你当前使用的 ad hoc 分发证书仅支持在 Apple Developer 后台预先绑定了 UDID 的设备上运行,如果需要面向所有普通用户分发、避免系统弹出无法打开的拦截提示,还需要额外完成苹果公证流程,公证操作也可以通过终端的 notarytool 命令完成,无需打开 Xcode。
内容的提问来源于stack exchange,提问作者Bryan Green
相关产品推荐
相关产品推荐

