首页 > 解决方案 > Azure 上的 iOS 构建设置失败,文件存在错误

问题描述

我正在使用 Xcode 9 版本为 iOS 运行 Azure 构建管道。我有安装 pod 的 cocoapods 步骤。然后在构建步骤中,我收到以下错误。我启用了干净的构建选项。此外,我尝试rm -rf Pods在运行 cocoapods 步骤之前运行 bash 脚本,但我仍然得到相同的文件退出错误,但有时,使用不同的文件。知道如何解决这个问题吗?

...
▸ Linking GoogleToolboxForMac
▸ Generating 'GoogleToolboxForMac.framework.dSYM'
▸ Building Pods/GrowingTextView [Release]
▸ Check Dependencies
▸ Processing GrowingTextView-Info.plist
▸ Copying GrowingTextView-umbrella.h
/usr/local/Cellar/ruby/2.6.3/lib/ruby/2.6.0/fileutils.rb:239:in `mkdir': File exists @ dir_s_mkdir - build (Errno::EEXIST)
    from /usr/local/Cellar/ruby/2.6.3/lib/ruby/2.6.0/fileutils.rb:239:in `fu_mkdir'
    from /usr/local/Cellar/ruby/2.6.3/lib/ruby/2.6.0/fileutils.rb:217:in `block (2 levels) in mkdir_p'
    from /usr/local/Cellar/ruby/2.6.3/lib/ruby/2.6.0/fileutils.rb:215:in `reverse_each'
    from /usr/local/Cellar/ruby/2.6.3/lib/ruby/2.6.0/fileutils.rb:215:in `block in mkdir_p'
    from /usr/local/Cellar/ruby/2.6.3/lib/ruby/2.6.0/fileutils.rb:200:in `each'
    from /usr/local/Cellar/ruby/2.6.3/lib/ruby/2.6.0/fileutils.rb:200:in `mkdir_p'
    from /usr/local/lib/ruby/gems/2.6.0/gems/xcpretty-0.3.0/lib/xcpretty/reporters/reporter.rb:29:in `finish'
    from /usr/local/lib/ruby/gems/2.6.0/gems/xcpretty-0.3.0/lib/xcpretty/reporters/junit.rb:65:in `finish'
    from /usr/local/lib/ruby/gems/2.6.0/gems/xcpretty-0.3.0/bin/xcpretty:89:in `each'
    from /usr/local/lib/ruby/gems/2.6.0/gems/xcpretty-0.3.0/bin/xcpretty:89:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.6.0/bin/xcpretty:23:in `load'
    from /usr/local/lib/ruby/gems/2.6.0/bin/xcpretty:23:in `<main>'
##[error]Error: /usr/bin/xcodebuild failed with return code: 65
##[section]Finishing: Xcode build

标签: ioscontinuous-integrationazure-pipelines

解决方案


大多数时候,在 Azure Pipelines 上,cocoapods 的错误 65 与签名和证书有关,而 XCode 尝试对不支持签名的 Pod 项目进行签名。

您是否启用或禁用了useXcpretty: 'false'? 我建议禁用它,因为它可能会隐藏管道日志中真正的 XCode 错误。

我必须在我的末尾添加以下内容Podfile以强制禁用登录 pod:

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = ''
    config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
    config.build_settings['CODE_SIGNING_REQUIRED'] = 'NO'
  end
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
        config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = ''
        config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
        config.build_settings['CODE_SIGNING_REQUIRED'] = 'NO'
    end
  end
end

推荐阅读