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

Fastlane打包iOS应用遇配置文件及签名证书问题求助

Fastlane iOS构建签名问题排查与解决

问题1:Push Notifications权限相关构建错误

配置与场景

我的Fastfile配置如下:

default_platform(:ios)

platform :ios do
  lane :staging do
    puts "iOS staging build"
    clean_build_artifacts
    disable_automatic_code_signing(path: "./ios/myappmobile.xcodeproj")
    build_app(
      scheme: "myappmobile",
      project: "./ios/myappmobile.xcodeproj",
      export_options: {
        signingStyle: "manual",
        provisioningProfiles: {
          "com.myapp" => "/Users/myuser/workspace/myapp/myappprovisioningprofile.mobileprovision"
        }
      },
      clean: true
    )
  end
end

注:/Users/myuser/workspace/myapp/myappprovisioningprofile.mobileprovision为有效本地路径,已下载对应Provisioning Profile文件;创建证书和Profile时已勾选Push Notification权限。

错误现象

运行fastlane ios staging触发错误:

error: "myappmobile" requires a provisioning profile with the Push Notifications feature. Select a provisioning profile in the Signing & Capabilities editor. (in target 'myappmobile' from project 'myappmobile')

即使将provisioningProfiles的值改为无效字符串(如"flim-flam-fizz-buzz"),仍出现相同错误。

原因与解决方法

核心原因

错误来自Xcode而非Fastlane:Fastlane仅调用Xcode构建流程,Xcode在编译阶段就会检查项目Capabilities配置(你的项目已开启Push Notifications),但你仅在export_options中配置了归档导出阶段的签名规则,编译阶段Xcode找不到匹配的Provisioning Profile,自然报错。

解决步骤

  1. 先安装Provisioning Profile到系统
    在clean_build_artifacts后添加Fastlane动作,自动安装Profile:

    install_provisioning_profile(
      path: "/Users/myuser/workspace/myapp/myappprovisioningprofile.mobileprovision"
    )
    
  2. 为编译阶段指定Profile
    在build_app中添加编译阶段的签名配置,注意填Profile的名称而非文件路径:

    build_app(
      scheme: "myappmobile",
      project: "./ios/myappmobile.xcodeproj",
      provisioning_profile_specifier: "myappprovisioningprofile", # 替换为你的Profile名称
      export_options: {
        signingStyle: "manual",
        provisioningProfiles: {
          "com.myapp" => "myappprovisioningprofile" # 这里也建议填名称,而非路径
        }
      },
      clean: true
    )
    

问题2:iOS Distribution证书未找到错误

错误现象

调整build_app配置解决推送通知问题后,出现新错误:

error: No signing certificate "iOS Distribution" found: No "iOS Distribution" signing certificate matching team ID "" with a private key was found. (in target 'myappmobile' from project 'myappmobile')

注:已从Apple Developer控制台下载分发证书ios_distribution.cer。

原因与解决方法

核心原因

你下载的ios_distribution.cer只是证书文件,缺少配对的私钥。Xcode识别可用签名证书的前提是:证书与对应的私钥同时存在于钥匙串中。

解决步骤

  1. 确保证书与私钥配对

    • 如果是在生成CSR证书请求的电脑上操作:直接双击ios_distribution.cer安装到钥匙串,私钥会自动关联。
    • 如果是在其他电脑上操作:需要从生成CSR的电脑导出包含私钥的.p12文件,导入到当前电脑的钥匙串后,再安装证书。
    • 若找不到原私钥:只能在Apple Developer控制台重新生成证书——重新创建CSR请求,提交后下载新证书并安装。
  2. Fastlane自动导入配置(可选)
    可以用Fastlane动作自动导入证书/私钥:

    • 导入单独证书:
      import_certificate(
        path: "/path/to/ios_distribution.cer",
        keychain_name: "login.keychain"
      )
      
    • 导入包含私钥的.p12文件:
      import_certificate(
        path: "/path/to/distribution_certificate.p12",
        password: "your_p12_password"
      )
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:23:14