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

Azure DevOps Flutter iOS流水线签名失败:xcodebuild返回代码65

解决Flutter iOS CI/CD流水线Xcode构建返回代码65的问题

核心问题分析

返回代码65是Xcode构建失败的通用错误,当前日志仅显示模拟器列表和两个脚本阶段警告(这些警告本身不会导致构建失败),关键错误信息被截断,必须先获取完整日志才能定位根本问题。

分步解决方案

1. 开启详细日志获取真实错误

修改Xcode@5任务配置,添加verboseLogging: true参数让Xcode输出完整构建日志,这样就能看到真正导致失败的原因(比如签名不匹配、权限缺失、依赖错误等):

- task: Xcode@5
  displayName: "Code Sign ipa for Distribution"
  inputs:
    actions: "build"
    scheme: "Runner"
    sdk: "$(sdk)"
    configuration: "$(configuration)"
    xcWorkspacePath: "ios/Runner.xcworkspace"
    xcodeVersion: "default"
    packageApp: true
    signingOption: "manual"
    signingIdentity: "$(APPLE_CERTIFICATE_SIGNING_IDENTITY)"
    provisioningProfileUuid: "$(APPLE_PROV_PROFILE_UUID)"
    verboseLogging: true  # 开启详细日志

2. 确认构建使用iOS设备SDK

日志里全是iOS模拟器设备,说明当前可能用了iphonesimulator SDK,但打包签名需要用iphoneos SDK。检查流水线中$(sdk)变量值是否为iphoneos,如果不是直接指定:

sdk: "iphoneos"

3. 验证签名配置一致性

  • 确保InstallAppleCertificate@2安装的p12证书,和InstallAppleProvisioningProfile@1安装的描述文件完全匹配:描述文件必须包含该证书的签名身份,且项目bundle ID和描述文件中的一致。
  • 检查$(APPLE_CERTIFICATE_SIGNING_IDENTITY)和$(APPLE_PROV_PROFILE_UUID)变量是否正确注入:可以在流水线里加个命令行任务打印这两个变量值,确认没有空值或拼写错误。
  • 确认描述文件是分发类型(Ad Hoc或App Store),不是开发类型。

4. 前置Flutter依赖检查(避免隐式失败)

在Xcode构建前添加依赖安装步骤,确保所有iOS依赖都正确配置:

- task: Bash@3
  displayName: "Install Flutter & iOS Dependencies"
  inputs:
    targetType: "inline"
    script: |
      flutter pub get
      cd ios
      pod install --repo-update

5. 处理脚本警告(可选,消除潜在隐患)

虽然当前警告不影响构建,但可以优化避免后续问题:

  • 打开iOS项目的Runner.xcodeproj,找到"Run Script"和"Thin Binary"构建阶段。
  • 取消勾选"Based on dependency analysis"选项,或者添加输出文件路径,避免每次构建重复执行脚本。

常见返回代码65的触发原因

  • 签名身份与描述文件不匹配
  • 描述文件过期或已被苹果撤销
  • 项目bundle ID与描述文件中配置的不一致
  • 描述文件未包含项目所需的权限(如推送通知、后台模式等)
  • 流水线使用的Xcode版本与项目最低要求不兼容

内容的提问来源于stack exchange,提问作者Anish Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:50:26