使用命令行上传到 iTunesConnect 时如何指定应用程序 ID
Posted
技术标签:
【中文标题】使用命令行上传到 iTunesConnect 时如何指定应用程序 ID【英文标题】:How to specify app id when upload to iTunesConnect using command line 【发布时间】:2014-03-19 12:05:38 【问题描述】:总结
我正在尝试自动将我的应用程序上传到 iTunesConnect。
我至少有 6 个应用程序,并且所有应用程序始终“准备好上传”。
问题是当我尝试使用命令行将应用程序上传到 iTunesConnect 时,我收到以下错误消息:
“警告:iTunesConnect 中预配置了多个应用程序。只会使用第一个。”。
问题
我怎么知道第一个是什么? 有没有办法设置第一个? 有没有办法指定我要提交的应用程序?我是怎么做的?构建脚本...
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
【问题讨论】:
嗨!你有关于这个问题的消息吗?你找到解决方法了吗?谢谢! 【参考方案1】:在最近 iTunes Connect 的变化之后,你可能想看看我的新开源库:https://github.com/KrauseFx/deliver
它将使用iTMSTransporter
将您的应用上传到 iTunes Connect。
您可以在此处查看应用的上传方式:https://github.com/KrauseFx/deliver/blob/master/lib/deliver/itunes_transporter.rb
【讨论】:
【参考方案2】:我发布了一个要点来获取下一个将在 iTunesConnect 上发布的应用程序的标识符:https://gist.github.com/KrauseFx/db0ea9c884465e507602
我找不到指定您要上传的应用程序的方法。至少现在有一种方法可以接收下一个要上传的应用的标识符。
基本上我使用“xcrun -sdk iphoneos Validation”命令并读取其输出以确定标识符。
【讨论】:
这在iTC更新后现在基本没用了。您必须改用 TMSTransporter。【参考方案3】:http://diegopeinador.blogspot.com/2013/10/automatic-app-creation-and-binary-upload.html本文包含解决方案,但您必须使用iTMSTransporter
(应用程序加载器的命令行工具)而不是xcrun Validation
。
基本上,您只需要文章中脚本的最后一行。我已经通过删除我不需要的参数来简化它,所以它看起来
/path/to/iTMSTransporter -u "$ITUNESCONNECT_LOGIN" -p "$ITUNESCONNECT_PASSWORD" -m upload -v critical -f /path/to/.itmp/or/folder/containing/.itmp
【讨论】:
你是天赐之物 :) 我正在为同样的问题苦苦挣扎,并试图找到几天的方法。一个小时前偶然发现了这个问题。你的答案刚刚弹出。谢谢【参考方案4】:在看到 Transporter 解决方案之前,我已经用 xrun 解决了这个问题。我没有为 xrun 指定捆绑 ID,而是尝试找出队列中的下一个并提交。
所以,我的脚本只是对我的一个随机应用程序进行“测试”验证,然后捕获 xcrun 的输出。错误消息提到了所需的捆绑包 ID,因此我构建并提交了该应用程序。
如果队列中的下一个是更新而不是新应用,Validate 不会告诉您捆绑 ID,因此您必须执行“测试”-upload 并且输出将具有:
ReservedBundleIdentifier = "..."
它再次告诉您接下来要构建哪个。为避免速度变慢,请使用一个非常小的应用程序进行“测试”上传。
【讨论】:
我为此发表了一个要点:gist.github.com/KrauseFx/db0ea9c884465e507602以上是关于使用命令行上传到 iTunesConnect 时如何指定应用程序 ID的主要内容,如果未能解决你的问题,请参考以下文章
使用相同的 App 版本和 Build 版本使当前版本过期并将新版本上传到 iTunesConnect
无法将应用内购买的托管内容上传到 iTunesConnect
Xcode 7.3 上传到 iTunesConnect(TestFlight 构建)失败