如何修复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 }}
问题成因
- 签名资产权限或加载异常:StoreKit.framework签名需要匹配的开发者证书、Provisioning Profile,GitHub Actions环境中可能未正确拉取签名资产,或证书权限不覆盖该框架签名需求。
- Xcode构建配置错误:项目Build Settings中,
Runnertarget的签名参数(如CODE_SIGN_IDENTITY、PROVISIONING_PROFILE_SPECIFIER)设置错误,或StoreKit.framework的搜索路径、签名规则配置异常。 - fastlane match流程问题:使用match管理签名资产时,keychain解锁不彻底、资产同步失败,导致签名工具无法访问所需证书和配置文件。
- 缓存干扰: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
相关产品推荐
相关产品推荐

