如何使用命令行上传到iTunesConnect时指定应用程序ID

概要

我正尝试将我的应用程序自动上传到iTunesConnect。

我至less有6个应用程序,都是“准备上传”。

问题是当我尝试上传一个应用程序使用命令行的iTunesConnect,我有以下错误信息:

“警告:iTunesConnect中预先configuration了一个以上的应用程序,只有第一个会被使用。”

问题

  • 我怎么知道第一个是什么?
  • 有没有办法设置第一个?
  • 有没有一种方法来指定我试图提交哪个应用程序? 我怎么做?

build立脚本…

xcodebuild -target $TARGETNAME -configuration Release -sdk iphoneos clean build "CODE_SIGN_IDENTITY=iPhone Distribution: XXXXX..." "PROVISIONING_PROFILE=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" xcrun -sdk iphoneos PackageApplication -v $CURRENTDIR/build/Release-iphoneos/$TARGETNAME.app -o $CURRENTDIR/Dist/$TARGETNAME.ipa --sign "iPhone Distribution: XXXXX..." --embed "path/to/XXXXX.mobileprovision" 

上传脚本…

 security add-generic-password -s Xcode:itunesconnect.apple.com -a user@email.com -w password -U xcrun -sdk iphoneos Validation -verbose -online -upload ./Dist/$TARGETNAME.ipa security delete-generic-password -s Xcode:itunesconnect.apple.com -a user@email.com 

在iTunes Connect最近发生变化之后,您可能需要查看我的新开源库: https : //github.com/KrauseFx/deliver

它将使用iTMSTransporter将您的应用上传到iTunes Connect。

你可以看看应用程序如何上传到这里: https : //github.com/KrauseFx/deliver/blob/master/lib/deliver/itunes_transporter.rb

我发布了一个要点,以获得在iTunesConnect上发布的下一个应用程序的标识符: https ://gist.github.com/KrauseFx/db0ea9c884465e507602

我找不到指定要上传的应用程序的方法。 至less现在有一种方法可以接收下一个要上传的应用程序的标识符。

基本上我使用'xcrun -sdk iphoneosvalidation'命令并读取其输出以确定标识符。

http://diegopeinador.blogspot.com/2013/10/automatic-app-creation-and-binary-upload.html这篇文章包含的解决scheme,但你必须使用iTMSTransporter (Application Loader的命令行工具),而不是xcrun Validation

基本上你只需要文章中脚本的最后一行。 我通过删除我不需要的参数来简化它,所以它看起来

 /path/to/iTMSTransporter -u "${ITUNESCONNECT_LOGIN}" -p "${ITUNESCONNECT_PASSWORD}" -m upload -v critical -f /path/to/.itmp/or/folder/containing/.itmp 

在看到Transporter解决scheme之前,我已经用xrun解决了这个问题。 我没有给xrun指定一个bundle id,而是试图找出队列中的下一个,并提交它。

所以,我的脚本只是做一个“testing”随机的一个应用程序的validation,并捕获xcrun的输出。 该错误消息提到所需的捆绑ID,所以我build立并提交该应用程序。

如果队列中的下一个是更新而不是新的应用程序,Validate将不会告诉您捆绑ID,因此您必须执行“test”-upload并且输出将具有:

ReservedBundleIdentifier =“…”

这又告诉你下一步要build立哪一个。 为了避免这种情况变得缓慢,请为“testing”上传一个非常小的应用程序。