去年下半年学伞,东南转了一大圈,飞伞,受伤,疫情,我就这么浪了大半年,大半年没摸过代码,最近有点事情需要更新应用,代码倒是弄好了,结果在家上传了一天,死都传不上,一直卡在授权进度上,也就是Authenticating with the iTunes store上卡死,偶尔卡过去了来个失败:App Store Connect Operation, Error An error occurred uploading to the App Store。
整呗,我寻思半年前上传啥的都好好的,不至于新版Xcode上出问题吧(虽然群里经常在骂阿三),所以完全没有考虑到Xcode上头去,那就一步步排除。
- 首先,今天刚换了电池,开启我小本本的第二春,应该不是电池问题。
- 其次,电信网络也好,手机热点也好,试了好多次,网络问题也排除。
- 再次,怀疑484苹果服务器抽风(主要是以前某两个版本遇到过,传很久能传上去),那就老套路用Application Loader,只要Xcode抽风,这玩意必定能成功,结果这玩意消失了,最后找到阿三们换过皮肤的皮肤怪Transporter,结果一个吊样,也是一直卡在授权。
- 最后,经过各种清缓存,重启,完全没啥鸟用,最终我才不得不怀疑上Xcode的问题,从这方面入手,根据我多年面向谷歌编程的功力,得以解决。毕竟半年没叨逼叨了,遂在此记录一下问题,正式解决开始。
其实也就三个命令
先切换到缓存目录下:
cd /Users/your_user_name/Library/Caches
再删除itmstransporter的缓存目录(等下告诉你们是啥情况):
rm -rf com.apple.amp.itmstransporter
最后无参数执行一下iTMSTransporter:
/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/itms/bin/iTMSTransporter
执行的结果:
其实这就是一个执行下载的过程,下载完成后,再打开Xcode,上传就是分分钟的事情了。
后话
怎样,操作很简单吧,这里出来唠两块钱的嗑,其实网上有多关于Xcode上传问题的解决方案,包括像iOS关于上传iTunes store一直卡住终极解决方案,他这里面都说的还是挺全的,不过就是老了点,不适用于新版本。
Xcode 11之后苹果把Application Loader已经移除了,替换成了开始提到的Transporter,其实也就是个换皮怪,改了下文案UI,但是Xcode本身的上传功能还是具备的,其实这个上传就是一个java的一套CI执行程序,而上文提到的iTMSTransporter只是一个下载程序,负责下载CI。而且以前的下载程序路径已经改了,缓存路径也改了,所以老方法一个也冇法。
最后简单猜测一下,为毛会一直卡住,是首次执行的时候需要下载上传那套CI,而给的提示只是授权,有可能是最近墙厚的原因,所以根本下载不动,我删缓存之前看了下,卡了几个小时只有几兆,真他娘的坑,这个小功能是哪只阿三搞的,拖出去吸两口新冠吧他娘的。
额外赠送
估计很多人执行了下载程序也会毫无提示,因为你没好梯子啊,只需要把梯子挂个全局,开个HTTP代理即可,什么?你ss只有socks5代理,自行转代理吧。代理接上梯子,速度biubiu的,让人害怕。
终端临时代理:
# proxy
function proxy_off(){
unset http_proxy
unset https_proxy
echo -e "已关闭代理"
}
function proxy_on() {
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
export http_proxy="http://127.0.0.1:8001"
export https_proxy=$http_proxy
echo -e "已开启代理"
}
8001是我自己的HTTP代理端口,别整岔了。