ios - 通过Azure Devops Extension上传到AppStore时如何修复 "Invalid Provisioning Profile"?

标签 ios swift azure-devops fastlane azure-devops-extensions

我正在使用 Azure Devops 和 faSTLane 为 iOS 应用实现持续集成。它构建并创建 IPA 文件,但是,当我在成功创建包后尝试上传文件时,出现此错误 消息:“无效的配置文件”。这是应用程序中使用的唯一分发配置文件,并且它可以与 Xcode 正常工作,因此它是有效的。如何解决?

  • 在项目和目标中将代码签名身份更改为自动和手动。 - 使用手动登录。目前处于自动模式。
  • Xcode 内build设置的配置文件当前为自动,已更改为手动并设置为 5c0e9419-2a5a-4905-ac99-e680efac07a5。我改回自动。
  • 仅在 Xcode 版本中使用分发证书。当我尝试这样做时,构建中出现错误,提示找不到 iOS 开发配置文件。我目前正在管道构建上安装开发和分发证书。

以下是我如何设置 Azure Devops(构建管道)。

- master

pool:
  vmImage: 'macos-latest'

steps:
- task: InstallAppleCertificate@2
  inputs:
    certSecureFile: 'iOSDistributionCertificate.p12'
    certPwd: 'xxxxx'
    keychain: 'temp'

- task: InstallAppleCertificate@2
  inputs:
    certSecureFile: 'iOSDevelopmentCertificate.p12'
    certPwd: 'xxxxx'
    keychain: 'temp'

- task: InstallAppleProvisioningProfile@1
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: '5c0e9419-2a5a-4905-ac99-e680efac07a5.mobileprovision'

- task: InstallAppleProvisioningProfile@1
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: '4e932719-f9bd-4d3e-b4e6-08b35260c632.mobileprovision'

- task: ios-bundle-version@1
  inputs:
    sourcePath: 'BookingApp/info.plist'
    versionCodeOption: 'buildid'
    versionCode: '$(Build.BuildId)'
    versionCodeOffset: '0'
    printFile: true

- task: Xcode@5
  displayName: 'Build the app using Xcode'
  inputs:
    actions: 'build'
    sdk: 'iphoneos12.4'
    configuration: 'Release'
    scheme: 'BookingApp'
    packageApp: true
    xcodeVersion: 10 # Options: 8, 9, 10, default, specifyPath
    signingOption: 'auto'
    useXcpretty: false # Makes it easier to diagnose build failures
    xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'

- task: AppStoreRelease@1
  inputs:
    serviceEndpoint: 'Booking App Connection'
    appType: 'iOS'
    ipaPath: '**/*.ipa'
    releaseTrack: 'TestFlight'
    installFastlane: false

这是错误消息。

[17:02:55]: ‌Get started using a Gemfile for fastlane https://docs.fastlane.tools/getting-started/ios/setup/#use-a-gemfile‌
[17:02:56]: Sending anonymous analytics information
[17:02:56]: Learn more at https://docs.fastlane.tools/#metrics
[17:02:56]: No personal or sensitive data is sent.
[17:02:56]: You can disable this by adding `opt_out_usage` at the top of your Fastfile
[17:02:56]: Login to App Store Connect (***)
[17:03:13]: Login successful
/usr/local/lib/ruby/gems/2.6.0/gems/nokogiri-1.6.8.1/lib/nokogiri/xml/document.rb:44: warning: constant ::Fixnum is deprecated
[17:03:16]: Ready to upload new build to TestFlight (App: 1483789798)...
[17:03:16]: Fetching password for transporter from environment variable named `FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD`
[17:03:16]: Going to upload updated app to App Store Connect
[17:03:16]: This might take a few minutes. Please don't interrupt the script.
[17:04:09]: [Transporter Error Output]: ERROR ITMS-90161: "Invalid Provisioning Profile. The provisioning profile included in the bundle BAG.BookingAppTests [Payload/BookingApp.app] is invalid. [Missing code-signing certificate]. A Distribution Provisioning profile should be used when submitting apps to the App Store. For more information, visit the iOS Developer Portal."
[17:04:09]: Transporter transfer failed.
[17:04:09]: 
[17:04:09]: ERROR ITMS-90161: "Invalid Provisioning Profile. The provisioning profile included in the bundle BAG.BookingAppTests [Payload/BookingApp.app] is invalid. [Missing code-signing certificate]. A Distribution Provisioning profile should be used when submitting apps to the App Store. For more information, visit the iOS Developer Portal."
[17:04:09]: [iTMSTransporter] [2019-10-16 17:04:09 UTC] <main> DBG-X:   parameter ErrorCode = 1102

[17:04:09]: [iTMSTransporter] [2019-10-16 17:04:09 UTC] <main> DBG-X:   parameter ErrorMessage = ERROR ITMS-90161: "Invalid Provisioning Profile. The provisioning profile included in the bundle BAG.BookingAppTests [Payload/BookingApp.app] is invalid. [Missing code-signing certificate]. A Distribution Provisioning profile should be used when submitting apps to the App Store. For more information, visit the iOS Developer Portal.

[17:04:09]: [iTMSTransporter]  (1102)

[17:04:09]: [iTMSTransporter] [2019-10-16 17:04:09 UTC] <main> ERROR: ERROR ITMS-90161: "Invalid Provisioning Profile. The provisioning profile included in the bundle BAG.BookingAppTests [Payload/BookingApp.app] is invalid. [Missing code-signing certificate]. A Distribution Provisioning profile should be used when submitting apps to the App Store. For more information, visit the iOS Developer Portal."

[17:04:09]: [iTMSTransporter] [2019-10-16 17:04:09 UTC] <main> DBG-X: The error code is: 1102

[17:04:09]: [iTMSTransporter] [2019-10-16 17:04:09 UTC] <main>  INFO: Done performing authentication. 

[17:04:09]: [iTMSTransporter] 1 package(s) were not uploaded because they had problems:

[17:04:09]: [iTMSTransporter]   /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/d20191016-2378-s6wyrx/1483789798.itmsp - Error Messages:

[17:04:09]: [iTMSTransporter]       ERROR ITMS-90161: "Invalid Provisioning Profile. The provisioning profile included in the bundle BAG.BookingAppTests [Payload/BookingApp.app] is invalid. [Missing code-signing certificate]. A Distribution Provisioning profile should be used when submitting apps to the App Store. For more information, visit the iOS Developer Portal."

[17:04:09]: [iTMSTransporter] [2019-10-16 17:04:09 UTC] <main> DBG-X: Returning 1

[17:04:09]: iTunes Transporter output above ^
[17:04:09]: ERROR ITMS-90161: "Invalid Provisioning Profile. The provisioning profile included in the bundle BAG.BookingAppTests [Payload/BookingApp.app] is invalid. [Missing code-signing certificate]. A Distribution Provisioning profile should be used when submitting apps to the App Store. For more information, visit the iOS Developer Portal."
Return status of iTunes Transporter was 1: ERROR ITMS-90161: "Invalid Provisioning Profile. The provisioning profile included in the bundle BAG.BookingAppTests [Payload/BookingApp.app] is invalid. [Missing code-signing certificate]. A Distribution Provisioning profile should be used when submitting apps to the App Store. For more information, visit the iOS Developer Portal."

提前致谢

最佳答案

这种情况在我身上发生过好几次,直到我决定再次创建配置文件并在我的 yml 文件中进行一些更改。这是完整的工作管道:

# Xcode
# Build, test, and archive an Xcode workspace on macOS.
# Add steps that install certificates, test, sign, and distribute an app, save build artifacts, and more:
# https://learn.microsoft.com/azure/devops/pipelines/languages/xcode
# Production
# Note: The certificates annd provisioning profiles path/passwors are stored in Group Variables

trigger:
 - master   

pool:
  vmImage: 'macOS-10.14'

variables:
  - group: 'Distribution Demo iOS'
  - name: BuildConfiguration
    value: 'Dev Release'
  - name: XCWorkSpacePath 
    value: 'CLI.xcworkspace'
  - name: Scheme 
    value: 'CLI'
  - name: ExportPath
    value: 'build'
  - name: ExportOptionsPListPath 
    value: 'exportOptions.plist'
  - name: AppIdentifier 
    value: 'cli.dev.test.CLI'
  - name: sdk 
    value: 'iphoneos'

steps:

- task: CocoaPods@0
  displayName: 'Downloading dependencies using CocoaPods with a forced repo update'
  inputs:
    forceRepoUpdate: true 

- task: InstallAppleCertificate@2
  displayName: 'Installing Apple Certificates from Secure Files'
  inputs:
    certSecureFile: $(CertificateFileName)
    certPwd: $(CertificatePassword)

- task: InstallAppleProvisioningProfile@1
  displayName: 'Installing Apple Provisioning Profile from Secure Files'
  inputs:
    provisioningProfileLocation: secureFiles
    provProfileSecureFile: $(ProvisioningFileName)
    removeProfile: false 

# Uncomment the next lines if you want to the current build manages the next version
#- task: Bash@3
#  displayName: 'Updating Build Number to the Next Version'
#  inputs:
#    targetType: inline
#    script: 'xcrun agvtool next-version -all'

- task: Xcode@5
  displayName: 'Archiving Application and Save In Build Path' 
  inputs:
    actions: 'archive'
    configuration: $(BuildConfiguration)
    xcWorkspacePath: $(XCWorkSpacePath)
    scheme: $(Scheme)
    packageApp: true 
    archivePath: $(ExportPath)
    exportPath: $(ExportPath)
    exportOptions: plist
    exportOptionsPlist: $(ExportOptionsPListPath)
    signingOption: manual
    provisioningProfileUuid: $(ProvisioningProfileUUID)
    provisioningProfileName: $(ProvisioningProfileName)

- task: CopyFiles@2
  displayName: 'Copying IPA to Artifacts Directory'
  inputs:
    Contents: '$(ExportPath)/*.ipa'
    TargetFolder: '$(Build.artifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  displayName: 'Uploading IPA for the Currenet Run'
  inputs:
    PathtoPublish: '$(Build.artifactStagingDirectory)'
    ArtifactName: 'GeneratedIPA'
    PublishLocation: Container

- task: AppStoreRelease@1
  displayName: 'Releasing IPA to TestFlight'
  inputs:
    serviceEndpoint: 'Apple2'
    appIdentifier: $(AppIdentifier)
    appType: iOS
    ipaPath: '$(Build.artifactStagingDirectory)/**/*.ipa'
    releaseTrack: TestFlight
    releaseNotes: 'testflight.developer_notes.txt'
    shouldSkipWaitingForProcessing: false 
    shouldSkipSubmission: false 
    # If you want to distribute to external testers uncomment the next two variables and write the group in externalTestersGroups
    # distributedToExternalTesters: true 
    # externalTestersGroups: 'groups'
    teamId: $(TeamID)
    teamName: $(TeamName)
    fastlaneArguments: 'action increment_build_number'

关于ios - 通过Azure Devops Extension上传到AppStore时如何修复 "Invalid Provisioning Profile"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58433233/

相关文章:

ios - 从 webView 读取 Pdf 数据

swift - 让 UITableViewRowAction 在点击时反弹

ios - 如何使用 Swift 将注册页面添加到我的 Parse 应用程序中?

azure - 从 Azure DevOps 设置应用服务连接字符串

azure-devops - 如何在同一作业中的任务之间更改 YAML 变量的值

azure-devops - 如何在 Team Services 和 Visual Studio Team Services 中添加提前期计算

ios - SwiftUI 列表 - 禁用特定行的 move ?

ios - 将图像添加到 UILabel 的左侧

ios - 如何在另一个 ViewController 中将带有 Xib 的 ViewController 显示为 subview

xcode - 使用数组和 UITableView 作为指示器通过函数调用字符串