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

Github Actions中Flutter macOS Release构建卡在codesign步骤无报错

Github Actions中Flutter macOS Release构建卡在codesign步骤无报错

我之前也碰到过一模一样的糟心事——在Github Actions上打包Flutter macOS桌面应用时,codesign步骤突然就卡住不动了,等满30分钟超时都没反应,本地跑完全正常,日志里还找不到任何报错信息,真的折腾了好久才解决。结合自己的踩坑经验,给你几个排查方向:

  • 先解锁Runner的默认密钥链
    Github Actions的macOS runner默认的登录密钥链是锁定状态的,codesign可能因为拿不到权限卡着不动。你可以在执行fastlane或者Flutter构建前,先解锁密钥链:

    security unlock-keychain -p "" ~/Library/Keychains/login.keychain-db
    

    要是用fastlane的话,也可以在lane里加这个动作:

    unlock_keychain(
      path: "~/Library/Keychains/login.keychain-db",
      password: "" # macOS Runner的登录密钥链默认密码为空
    )
    
  • 跳过硬时间戳检查
    很多时候codesign卡住是因为请求苹果的时间戳服务器超时(Runner的网络环境可能有限制)。你可以临时禁用硬时间戳来验证:
    在Flutter构建前设置环境变量,让codesign跳过时间戳:

    export CODESIGN_OPTIONS="--timestamp=none"
    

    或者直接让Flutter不要自动签名,之后手动执行带参数的codesign:

    # 先不签名构建
    flutter build macos --release --no-codesign --build-number=${{ github.run_number }} -v
    # 手动签名,跳过时间戳
    codesign --force --sign "你的签名证书名称" --options runtime --timestamp=none build/macos/Build/Products/Release/你的应用.app
    
  • 检查fastlane match的证书同步情况
    看你的配置里用了readonly: true,有时候Runner上的证书可能没正确导入密钥链,或者权限不足。可以在sync_code_signing之后,加一步检查命令:

    # 在fastlane lane里添加
    sh("security find-identity -v -p codesigning")
    

    确保输出里能看到你用来签名的证书。另外,Google Cloud存储模式下,要确认GCP密钥的权限足够访问存储桶,有没有过期或者权限配置错误。

  • 指定Xcode版本,避免兼容性问题
    Github Actions的macos-latest会自动更新Xcode版本,有时候和你用的Flutter版本(比如3.32.5)不兼容,导致签名流程出问题。可以手动指定稳定的Xcode版本:

    - name: 指定Xcode版本
      if: needs.mac_check.outputs.macos_build == 'true'
      uses: actions/setup-xcode@v2
      with:
        xcode-version: '15.4' # 选和你的Flutter版本兼容的Xcode
    
  • 给codesign加极致 Verbose 日志
    要是上面的方法都没用,就把签名过程的日志拉满。修改Flutter的macos构建脚本,把codesign命令加上-vvvv参数,或者手动执行签名命令时加最高级别的日志:

    codesign --force --sign "证书名称" --options runtime --verbose=4 build/macos/Build/Products/Release/你的应用.app
    

    这样能看到codesign每一步的操作,到底是卡在证书验证、网络请求还是其他环节。

我当时是解锁密钥链+跳过时间戳就解决了问题,你可以一个个试这些方法,应该能定位到原因。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:23:08