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

如何修复GitHub Actions中Fastlane打包iOS时的Code Sign退出码65错误?

打包iOS应用时CodeSign StoreKit.framework失败问题排查与解决

在GitHub Actions中使用fastlane v2.206.2执行bundle exec fastlane beta命令打包iOS应用时,出现签名失败错误,具体日志如下:

The following build commands failed:
CodeSign /Users/runner/Library/Developer/Xcode/DerivedData/Runner-gzzbtgmsqethlzedjqlbspydxjjv/Build/Intermediates.noindex/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/StoreKit.framework (in target 'Runner' from project 'Runner')
(1 failure)
[10:45:29]: Exit status: 65
[10:45:30]:

已尝试升级Xcode版本与fastlane版本,但问题仍未解决。

附上GitHub Action代码片段:

- name: Deploy to TestFlight/PGY
    run: |
      cd ./ios
      bundle exec fastlane beta
    env:
      FLUTTER_ROOT: ${{ secrets.FLUTTER_ROOT }}
      APPLE_ID: ${{ secrets.APPLE_ID }}
      GIT_URL: ${{ secrets.GIT_URL }}
      PGY_USER_KEY: ${{ secrets.PGY_USER_KEY }}
      PGY_API_KEY: ${{ secrets.PGY_API_KEY }}
      TEAM_ID: ${{ secrets.TEAM_ID }}
      ITC_TEAM_ID: ${{ secrets.ITC_TEAM_ID }}
      FASTLANE_USER: ${{ secrets.FASTLANE_USER }}
      FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}
      FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}
      FASTLANE_SESSION: ${{ secrets.FASTLANE_SESSION }}
      MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
      MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
      MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
      DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS: ${{ secrets.DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS }}

问题成因

  1. 签名资产权限或加载异常:StoreKit.framework签名需要匹配的开发者证书、Provisioning Profile,GitHub Actions环境中可能未正确拉取签名资产,或证书权限不覆盖该框架签名需求。
  2. Xcode构建配置错误:项目Build Settings中,Runner target的签名参数(如CODE_SIGN_IDENTITY、PROVISIONING_PROFILE_SPECIFIER)设置错误,或StoreKit.framework的搜索路径、签名规则配置异常。
  3. fastlane match流程问题:使用match管理签名资产时,keychain解锁不彻底、资产同步失败,导致签名工具无法访问所需证书和配置文件。
  4. 缓存干扰:GitHub Actions残留的DerivedData或旧签名缓存,导致新构建时签名流程冲突。

解决与避免方法

  • 同步并验证签名资产:使用fastlane match重新拉取对应环境的签名资产,确保证书和配置文件权限合规:
    bundle exec fastlane match development --readonly
    
  • 修正Xcode签名配置:在iOS项目Build Settings中,将CODE_SIGN_STYLE设为Manual,指定正确的CODE_SIGN_IDENTITY和PROVISIONING_PROFILE_SPECIFIER,同时确认FRAMEWORK_SEARCH_PATHS正确指向StoreKit.framework路径。
  • 优化GitHub Actions签名环境:在执行fastlane前添加keychain解锁步骤,确保签名资产可访问:
    - name: Unlock Keychain
      run: |
        security unlock-keychain -p ${{ secrets.MATCH_KEYCHAIN_PASSWORD }} ${{ secrets.MATCH_KEYCHAIN_NAME }}
    
  • 清理构建缓存:在构建前清理DerivedData,避免旧数据干扰:
    - name: Clean DerivedData
      run: |
        xcodebuild clean -project Runner.xcodeproj -scheme Runner -configuration Release
    
  • 固定Xcode版本:在GitHub Actions中明确指定Xcode版本,避免版本切换导致的配置兼容问题:
    - name: Select Xcode version
      run: sudo xcode-select -s /Applications/Xcode_15.0.app
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:45:14