Fastlane失败,出现错误"Cannot obtain the content provider public id. Please specify a provider short name using the -asc_provider option."

回答 7 浏览 3686 2022-10-19

我使用Fastlane创建了一个iOS测试飞行构建,我得到了这个奇怪的错误,不知道为什么,因为它昨天还能正常工作,现在在Fastlane配置没有任何改变的情况下,它在将构建上传到Apple App store时给我出了一个错误。

错误如下

[21:50:01]: Transporter transfer failed.
[21:50:01]: 
[21:50:01]: Cannot obtain the content provider public id. Please specify a provider short name using the -asc_provider option.

[21:50:02]: Cannot obtain the content provider public id. Please specify a provider short name using the -asc_provider option.
Return status of iTunes Transporter was 1: Cannot obtain the content provider public id. Please specify a provider short name using the -asc_provider option.
The call to the iTMSTransporter completed with a non-zero exit status: 1. This indicates a failure.

[21:50:02]: Error uploading ipa file: 


[21:50:02]: fastlane finished with errors

[!] Error uploading ipa file:

请参考下面的日志 在此输入图片描述

Haresh Ghatala 提问于2022-10-19
--verbose运行fastlane,从详细的日志中看看问题是否更清楚了。akjndklskver 2022-10-19
哦,还有:"如果你在多个App Store Connect团队中,iTunes Transporter可能需要一个提供者的短名称来知道在哪里上传你的二进制文件。pilot将尝试使用选定团队的长名称来检测提供者的短名称。要用一个明确的值覆盖检测到的值,请使用itc_provider选项。"(来源:docs.fastlane.tools/actions/testflight)akjndklskver 2022-10-19
如果你可以的话,不要展示代码的图片。我确信你可以把这些东西从fastlane日志中复制出来,然后将其作为代码文本粘贴到问题中。matt 2022-10-20
请看这里,为什么你应该使用文字而不是文字的图像。在你编辑之后,将这个和其他与图像有关的评论标记为"不再需要"。rainbow.gekota 2022-11-04
7 个回答
#1楼
得票数 12

对于那些在Azure Devops的AppStoreRelease任务上有此困扰的人。使用@user20291554的解决方案,可以按以下方式解决

 - job: ios
    pool:
      vmImage: macOS-latest
    variables:
      DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS: "-asc_provider <your team ID or short name if different>"
    steps:
      ...
      - task: AppStoreRelease@1
        inputs:
      ...
Archimedes Trajano 提问于2022-10-20
我们是否可以在变量组variables: - group: App Variables中提到DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS Sagar 2022-11-08
@Sagar 是的,在变量组中也对我有效。名称:"DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS" 。值:"-asc_provider 12345" 其中12345是你的团队ID。K232 2022-11-09
@K232 我可以在Azure lib.变量组中添加这个,而不是.YML文件。我收到了The username xyz.com is not a member of the provider 12345Sagar 2022-11-10
#2楼
得票数 8

请把itc_providerapple_id一起加到下面这行代码中。

upload_to_testflight(
    skip_waiting_for_build_processing: true,
    apple_id: "APPLE_ID",
    itc_provider:"ID" #example: W4A0P2BYMN
)

如果你在多个App Store Connect团队中,Delivery需要一个提供者的短名称来知道在哪里上传你的二进制文件。Delivery将尝试使用所选团队的长名称来检测提供者短名称。要用一个明确的值来覆盖检测到的值,请使用itc_provider选项。

Maheshvirus 提问于2022-10-20
Paul Kastel 修改于2022-10-22
在Azure管道中,我们可以添加id'sSagar 2022-11-08
#3楼
得票数 6

我也有过这样的经历。

这个来自github的评论帮了我大忙。

Add ENV variable to your deployment (or local machine 🥇, or Fastfile directly) With DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS we can add the "missing" -asc_provider variable.

ENV["DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS"] = "-asc_provider YourShortName" Just deployed and it works for those who can't wait.

user20291554 提问于2022-10-20
#4楼
得票数 4

这就是我的解决方法!


      deliver(
        app_identifier: '{{YOUR_APP_ID}}',
        submit_for_review: false,
        skip_screenshots: true,
        force: true,
        itc_provider: "{{YOUR_TEAM_ID}}" // <- added!
      )
efiejfejt 提问于2022-10-21
在Azure管道中,我们可以提到这些ID'sSagar 2022-11-08
#5楼
得票数 3

为了获得itc_provider,运行命令/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/itms/bin/iTMSTransporter -m provider -u 'appleid@xxx.xx' -p 'XXXX-XXXX-XXXX' -account_type itunes_connect -v off

其中appleid@xxx.xx 你的appleid xxxx-xxxx-xxxx-xxxx - 你的应用程序的密码。

如何生成一个特定的应用密码

  • 登录到appleid.apple.com。
  • 在 "登录和安全 "部分,选择 "应用程序特定密码"。
  • 选择 "生成特定应用的密码 "或选择 "添加 "按钮 蓝色加号图标,然后按照屏幕上的步骤进行操作。
  • 在应用程序的密码字段中输入或粘贴应用程序的特定密码。

enter image description here

AlexNikov 提问于2022-10-23
如果itms文件夹不存在,我应该怎么做?(运行Xcode 14.)David 2022-10-24
你可以从help.apple.com/itc/transporteruserguide/en.lproj/static.html中下载它。AlexNikov 2022-10-27
#6楼
得票数 3

对我来说,添加环境变量的工作非常完美。

ITMSTRANSPORTER_FORCE_ITMS_PACKAGE_UPLOAD: true

就我的情况而言,这里有一个Azure DevOps管道的例子。

- task: AppStoreRelease@1
    env:
        ITMSTRANSPORTER_FORCE_ITMS_PACKAGE_UPLOAD: true
    ...

来源Fastlane GitHub问题

SHato 提问于2022-10-25
James Risner 修改于2022-10-29
#7楼
得票数 1

我使用fastlane deliver来上传我的应用程序。

我的解决办法是:为命令fastlane deliver添加新的标签/标志,例如。 fastlane deliver --username xxx@xxx.com....

而新添加的标签是--itc-provider my_team_id

你可以在这里找到你的团队_ID。page

因此,最后的命令是:fastlane deliver --verbose --ipa xxx --username xxx --app_identifier xxx --itc_provider team_id

xxx => 对应于你的项目 team_id => 对应于团队的ID,你可以在上面的页面上得到。

Paulo Henrique 提问于2022-10-20
Paulo Henrique 修改于2022-10-20