iOS - Azure DevOPS中的错误Xcode 10 - 配置配置文件任务的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS - Azure DevOPS中的错误Xcode 10 - 配置配置文件任务的问题相关的知识,希望对你有一定的参考价值。

我遇到了一个针对Xcode ios应用程序的Azure DevOPS管道的问题。我从头开始创建了管道,它使用了一个yaml文件,我在其中定义了构建以及基于Microsoft官方文档的签名和配置。该构建使用XcodeVersion = 10与CocoaPods并实现签名和配置。我对预安装P12证书没有任何问题,构建从Secure File库中提取它并成功安装它。

给我一个问题的是配置文件。我必须在InstallAppleProvisioningProfile @ 1任务或Xcode任务中的ProvisioningProfileUuid配置中做错了,因为构建会在Xcode任务上引发以下错误:

❌错误:“注册”需要具有无线附件配置功能的配置文件。在项目编辑器中为“Release”构建配置选择配置文件。 (在目标'注册')

我已经尝试将InstallAppleProvisioningProfile @ 1任务的provProfileSecureFile设置设置为指向'.provisionprofile'和'.mobileprovision'文件,但我仍然看不到日志中没有执行任何命令。可以在本地基于“MyProvisioning_Profile.mobileprovision”构建,签名和配置应用程序,而不会出现任何问题。

pool:
    vmImage: 'macOS-10.13'

variables:
    scheme: ''
    sdk: 'iphoneos'
    configuration: 'Release'

steps:
# Install an Apple certificate required to build on a macOS agent
- task: InstallAppleCertificate@2
    inputs:
    certSecureFile: 'MyProductionCert.p12'
    certPwd: $(P12password)

# Install an Apple provisioning profile required to build on a macOS agent
- task: InstallAppleProvisioningProfile@1
inputs:
    provisioningProfileLocation: 'Secure Files'
    provProfileSecureFile: 'MyProvisioning_Profile.provisionprofile'
    removeProfile: false

- task: Xcode@5
inputs:
    sdk: '$(sdk)'
    configuration: '$(configuration)'
    xcodeVersion: '10' 
    exportPath: '$(agent.buildDirectory)/output/$(sdk)/$(configuration)'
    packageApp: false
    xcWorkspacePath: 'Register.xcworkspace' 
    scheme: 'Register'
    signingOption: 'manual' 
    signingIdentity: $(APPLE_CERTIFICATE_SIGNING_IDENTITY)
    provisioningProfileUuid: $(APPLE_PROV_PROFILE_UUID)

我希望看到至少一个命令正在从InstallAppleProvisioningProfile @ 1任务执行,但我看到的是2个成功但日志中的空任务:1。作业前:InstallAppleProvisioningProfile 2. InstallAppleProvisioningProfile

然后,Azure DevOPS Xcode任务失败并显示以下错误:

2019-02-08T01:35:05.1819530Z [command]/usr/bin/xcodebuild -sdk iphoneos -configuration Release -workspace /Users/vsts/agent/2.146.0/work/1/s/Register.xcworkspace -scheme Register build CODE_SIGN_STYLE=Manual CODE_SIGN_IDENTITY=iPhone Distribution: [MyCompany LLC] ([MyTeamID]) PROVISIONING_PROFILE= PROVISIONING_PROFILE_SPECIFIER= | /usr/local/lib/ruby/gems/2.6.0/bin/xcpretty -r junit --no-color
2019-02-08T01:35:10.6519500Z ❌  error: "Register" requires a provisioning profile with the Wireless Accessory Configuration feature. Select a provisioning profile for the "Release" build configuration in the project editor. (in target 'Register')
2019-02-08T01:35:10.6560090Z ** BUILD FAILED **

有没有人使用Azure管道之前已经看到过这个问题?我该如何解决?

答案

您需要使用配置文件文件的GUID(与签名证书相同),而不是其文件名。

如果您在Azure DevOps(管道>库>安全文件> {您的配置文件文件})中查看文件详细信息,则可以从secureFileId查询字符串参数中获取URL中的GUID。

另一答案

使用InstallAppleProvisioningProfile@1任务运行管道时,可以找到配置文件GUID。 (根据我的经验,来自SecureFiles的URL中的GUID是来自Azure管道的GUID,与配置文件GUID无关。

如果您已将配置文件上载到管道的安全文件,并在管道中包含以下内容:

- task: InstallAppleProvisioningProfile@1
  displayName: 'Install Ad Hoc Apple Provisioning Profile'
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: 'SomeProfile.mobileprovision'

您将在管道的日志中看到类似的内容:

sr/libexec/PlistBuddy -c Print UUID _xcodetasktmp.plist
12345678-abcd-1234-abcd-1234567890ab
sr/libexec/PlistBuddy -c Print Name _xcodetasktmp.plist
Company Profile iOS Distribution or Ad-Hoc

从那里复制配置文件GUID,更新您的管道并再试一次。

我对XCode任务的配置如下:

- task: Xcode@5
  displayName: 'Build React Native for iOS'
  inputs:
    actions: 'build'
    scheme: 'AwesomeAppNative'
    sdk: 'iphoneos'
    configuration: 'Release'
    xcWorkspacePath: './ios/AwesomeAppNative.xcworkspace'
    xcodeVersion: '10' # Options: 8, 9, 10, default, specifyPath
    args: '-UseModernBuildSystem=N' # See https://github.com/facebook/react-native/issues/20492
    useXcpretty: 'false' 
    signingOption: 'manual' # Options: nosign, default, manual, auto
    signingIdentity: 'Certificate identity name (<TEAMID>)'
    provisioningProfileUuid: 12345678-abcd-1234-abcd-1234567890ab # Ad Hoc
    # provisioningProfileName: DONT PUT THE NAME HERE IT WOULD TAKE PRECENDENCE
    # teamId: <TEAMIDFromCertificat> # for signingOption: auto
    packageApp: 'true' # Package the app
    exportOptions: 'auto'

以上是关于iOS - Azure DevOPS中的错误Xcode 10 - 配置配置文件任务的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Azure DevOps 中的“堆栈跟踪错误”

如何在 yaml 中处理 Azure DevOps 管道中的错误?

APIM:从 Azure DevOps CD 管道中的 Azure Blob 存储中检索策略 XML 失败,如收到错误,如提供的链接格式错误

Azure DevOps 发布 Api 400 错误请求错误

Azure DevOps 的 Ionic macOS 构建问题

如何从 Azure DevOps 中的文件夹(不是 zip)部署 WebApp