Fastlane失败,出现错误"Cannot obtain the content provider public id. Please specify a provider short name using the -asc_provider option."
我使用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:
--verbose
运行fastlane,从详细的日志中看看问题是否更清楚了。
- akjndklskver 2022-10-19
对于那些在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:
...
variables: - group: App Variables
中提到DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS
?
- Sagar 2022-11-08
.YML
文件。我收到了The username xyz.com is not a member of the provider 12345
- Sagar 2022-11-10
请把itc_provider
和apple_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选项。
我也有过这样的经历。
这个来自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.
这就是我的解决方法!
deliver(
app_identifier: '{{YOUR_APP_ID}}',
submit_for_review: false,
skip_screenshots: true,
force: true,
itc_provider: "{{YOUR_TEAM_ID}}" // <- added!
)
为了获得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。
- 在 "登录和安全 "部分,选择 "应用程序特定密码"。
- 选择 "生成特定应用的密码 "或选择 "添加 "按钮 蓝色加号图标,然后按照屏幕上的步骤进行操作。
- 在应用程序的密码字段中输入或粘贴应用程序的特定密码。
对我来说,添加环境变量的工作非常完美。
ITMSTRANSPORTER_FORCE_ITMS_PACKAGE_UPLOAD: true
就我的情况而言,这里有一个Azure DevOps管道的例子。
- task: AppStoreRelease@1
env:
ITMSTRANSPORTER_FORCE_ITMS_PACKAGE_UPLOAD: true
...
我使用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,你可以在上面的页面上得到。