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

Electron打包代码签名失败,公证后证书无效致应用崩溃求助

Electron macOS打包签名失败&公证后启动崩溃问题排查

问题现象

1. 打包时代码签名失败

执行打包后收到如下错误:

Packaging ApplicationWARNING: Code sign failed; please retry manually. Error: Command failed: spctl --assess --type execute --verbose --ignore-cache --no-cache /var/folders/kw/fp514mmd4djdrld7q8_ttp4r0000gr/T/electron-packager/darwin-x64/myapp-darwin-x64/myapp.app
/var/folders/kw/fp514mmd4djdrld7q8_ttp4r0000gr/T/electron-packager/darwin-x64/myapp-darwin-x64/myapp.app: rejected

2. 公证后应用启动崩溃

完成公证后启动应用直接崩溃,错误日志如下:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGKILL (Code Signature Invalid))
Exception Codes:       UNKNOWN_0x32 at 0x0000001e0000a5c0
Exception Codes:       0x0000000000000032, 0x0000001e0000a5c0
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace CODESIGNING, Code 2 

打包配置(electron.config.js)

osxSign: {
    identity:
        'Developer ID Application: ### (###)',
},
osxNotarize: {
    appleId: '###',
    appleIdPassword: '###',
    teamId: '###',
    ascProvider: '###',
},

已知信息

证书在Xcode、钥匙串访问及security find-identity -p codesigning -v命令中均正常显示,且已关联对应私钥;默认配置下问题依旧,手动指定证书后无改善。


可能原因及排查解决办法

  • 证书权限或钥匙串访问问题
    打开钥匙串访问,找到对应Developer ID证书,右键「显示简介」→「访问控制」,确认勾选「允许所有应用访问此项目」,或至少添加electron-packager、codesign等工具;尝试用sudo重新打包(注意sudo环境变量需包含electron相关命令)。

  • 签名配置参数缺失
    补充osxSign的必要参数,macOS公证要求开启硬运行时,示例配置:

    osxSign: {
        identity: 'Developer ID Application: ### (###)',
        hardenedRuntime: true,
        gatekeeperAssess: false,
        entitlements: './entitlements.plist',
        entitlementsInherit: './entitlements.plist'
    }
    

    同时确保entitlements.plist包含Electron应用所需权限:

    <?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.cs.allow-jit</key>
        <true/>
        <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
        <true/>
        <key>com.apple.security.cs.debugger</key>
        <true/>
    </dict>
    </plist>
    
  • 缓存或临时文件问题
    删除electron-packager生成的临时目录,清理打包缓存后重新打包;执行spctl --remove-cache清除Gatekeeper缓存,再用spctl --assess --type execute --verbose /path/to/your/app.app重新验证签名。

  • 公证流程不完整或失败
    用xcrun altool --notarization-info <RequestUUID> -u <appleId>查询公证结果(RequestUUID可在打包日志中找到),确认公证是否真的成功,若有警告需修正后重新提交。

  • 工具兼容性问题
    检查electron、electron-packager版本是否适配当前macOS签名要求,尝试升级到最新稳定版;也可切换到electron-builder,其签名和公证流程更成熟。

  • 系统权限或环境问题
    确保当前用户有足够系统权限,避免在受限账户下操作;执行sudo spctl --master-enable确保Gatekeeper启用(公证应用需其验证),打包时可通过gatekeeperAssess: false跳过提前检查。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:01:55