Azure Pipelines中Xcode@5构建Flutter iOS应用时报错求助
我在为团队的Flutter应用搭建CI/CD流程时,使用Azure DevOps的Xcode@5任务构建iOS版本,遇到了以下错误:
Starting: Xcode Build ============================================================================== Task : Xcode Description : Build, test, or archive an Xcode workspace on macOS. Optionally package an app. Version : 5.248.1 Author : Microsoft Corporation Help : ============================================================================== ##[error]TypeError: Cannot read properties of undefined (reading 'trim') Finishing: Xcode Build
涉事的Xcode任务配置如下:
- task: Xcode@5 displayName: "Xcode Build" inputs: actions: 'clean archive' packageApp: true signingOption: 'manual' signingIdentity: $(APPLE_CERTIFICATE_SIGNING_IDENTITY) provisioningProfileUuid: $(APPLE_PROV_PROFILE_UUID) teamId: $(APPLE_TEAM_ID) sdk: 'iphoneos' scheme: 'Runner' destinationPlatformOption: 'iOS' destinationTypeOption: 'devices' configuration: 'Release' xcWorkspacePath: 'ios/Runner.xcworkspace' exportMethod: 'app-store' exportTeamId: $(APPLE_TEAM_ID) archivePath: 'ios/archive/Runner.xcarchive' exportPath: 'output/iphoneos/Release' xcodeVersion: 'specifyPath' xcodeDeveloperDir: '/Applications/Xcode_$(XCODE_VERSION).app/Contents/Developer' args: '-verbose' continueOnError: false
可能的解决方案
检查管道变量有效性:确认
$(APPLE_CERTIFICATE_SIGNING_IDENTITY)、$(APPLE_PROV_PROFILE_UUID)、$(APPLE_TEAM_ID)、$(XCODE_VERSION)这些变量已在管道中正确定义且不为空。若变量未设置,任务处理时会拿到undefined,调用trim()方法就会触发错误。可在任务前添加打印步骤验证:- script: | echo "APPLE_CERTIFICATE_SIGNING_IDENTITY: $(APPLE_CERTIFICATE_SIGNING_IDENTITY)" echo "APPLE_PROV_PROFILE_UUID: $(APPLE_PROV_PROFILE_UUID)" echo "APPLE_TEAM_ID: $(APPLE_TEAM_ID)" echo "XCODE_VERSION: $(XCODE_VERSION)" displayName: "Print Pipeline Variables"移除冗余的Destination参数:
archive操作不需要指定目标设备,配置中的destinationPlatformOption和destinationTypeOption属于无效参数,可能导致任务内部逻辑出错。直接删除这两行配置:# destinationPlatformOption: 'iOS' # destinationTypeOption: 'devices'验证Xcode路径正确性:确保
xcodeDeveloperDir中的$(XCODE_VERSION)与实际安装的Xcode版本匹配,比如安装的是Xcode 15.0,变量需设置为15.0,保证路径/Applications/Xcode_15.0.app/Contents/Developer真实存在。可添加步骤检查:- script: | ls -la /Applications/Xcode_$(XCODE_VERSION).app/Contents/Developer displayName: "Check Xcode Path"调整Xcode任务版本:当前使用的Xcode@5版本为5.248.1,可能存在已知bug。尝试降级到5.247.x版本或升级到最新可用版本,排查是否为版本问题导致的错误。
简化任务参数:暂时移除
args: '-verbose',verbose参数可能输出过多信息干扰任务逻辑,先使用默认配置完成构建,确认问题解决后再逐步添加调试参数。
内容的提问来源于stack exchange,提问作者Diego Pestana

