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

CI环境测试iOS应用出现「No signing certificate」错误如何修复?

修复iOS GitHub Action测试的签名错误

问题分析

你遇到的签名错误核心原因是:

  • Xcode GUI运行模拟器测试时,会自动跳过或简化签名流程,但xcodebuild命令行工具默认严格遵循项目签名配置。
  • 当前项目签名为手动模式,而GitHub的macOS Runner是全新的干净环境,没有本地存储的开发证书和配置文件,导致构建失败。

解决方案

方案1:给xcodebuild添加自动签名更新参数

这是最快捷的修复方式,直接在xcodebuild命令中加入-allowProvisioningUpdates参数,允许Xcode自动生成适配CI环境的临时签名配置:

修改GitHub Action中的run命令为:

xcodebuild clean test -workspace "xxx.xcworkspace" -scheme "xxx" -destination "platform=iOS Simulator,name=iPhone 12 Pro,OS=latest" -allowProvisioningUpdates | xcpretty && exit ${PIPESTATUS[0]}

该参数会让Xcode自动创建开发证书、生成临时配置文件,无需手动导入任何签名资产。

方案2:修改项目为自动签名模式

在本地Xcode中打开项目,进入目标的Signing & Capabilities页面,勾选Automatically manage signing并正确设置Team ID。提交该配置变更到仓库后,CI环境的xcodebuild会自动处理签名,无需额外参数。

方案3:手动导入签名资产(适合特殊场景)

如果必须使用手动签名,需要将开发证书(.p12文件)和配置文件(.mobileprovision文件)存储到GitHub Secrets中,再在Action步骤中导入:

  1. 将证书和配置文件分别上传为GitHub Secrets(例如命名为IOS_DEV_CERT和IOS_DEV_PROFILE)
  2. 在Action中添加导入步骤:
- name: Import signing certificate
  run: |
    echo "$IOS_DEV_CERT" | base64 --decode > dev_cert.p12
    security import dev_cert.p12 -P $CERT_PASSWORD -k ~/Library/Keychains/login.keychain-db -T /usr/bin/codesign
  env:
    IOS_DEV_CERT: ${{ secrets.IOS_DEV_CERT }}
    CERT_PASSWORD: ${{ secrets.CERT_PASSWORD }}

- name: Install provisioning profile
  run: |
    mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
    echo "$IOS_DEV_PROFILE" | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/dev_profile.mobileprovision
  env:
    IOS_DEV_PROFILE: ${{ secrets.IOS_DEV_PROFILE }}

为什么之前CI能正常运行?

大概率是之前项目签名配置为自动模式,或者GitHub Runner环境曾临时缓存过签名资产(但Runner是临时环境,缓存不可靠),后续配置变更或环境更新导致签名流程失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:49:58