iOS发版时,我们需要将 ipa文件(包含元数据的xxx.xml的xxx.itmsp)上传到 ITunes Connect后台,之后通过testflight放出内测,或者发版到AppStore。
上传这个过程,不管是我们直接使用 Application Loader GUI还是 fastlane,其实我们调用的都是 iTMSTransporter;这个程序是java写的,支持跨平台
/Application Loader.app/Contents/itms/bin/iTMSTransporter
image.png
上传的时候,一直报
** ERROR: Communication error. Please use diagnostic mode to check connectivity. You need to have outbound access to TCP port 443.
ERROR: An exception has occurred: The target server failed to respond
org.apache.http.NoHttpResponseException: The target server failed to respond
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:141)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
...... **
网上查找找问题;一般都是说是防火墙或者代理问题;机器在机房放着,网络的同学很自信的告诉咱们,网络没问题,一定是服务的问题。
没办法,去🍎爸爸官网找找;
这时候,我们会发现;
Uoload模式下:会有三种传输模式:
Aspera模式, Signiant模式, DAV模式
image.png
简单说点;
- DAV使用了https完成任务, 使用443端口
- Aspera基于FASP文件传输, 使用TCP 33001端口和UDP端口 33001
- Signiant 使用TCP 44001端口和UDP端口44001至44101
详情信息可以去这里查看 传输模式详情说明
除了Upload模式,我们可以使用 Diagnostic 模式,从而对上传网络进行测试;
比如我们可以使用如下命令进行测试
iTMSTransporter -m diagnostic -v eXtreme -u your_team -p your_passwd
不带 -t 参数,会对三种模式都进行测试(其实就是传一个小文件到后台看能否成功)
写了脚本,对机房机器进行三种模式测试后,其实会发现 DAV模式是比较好的;基本可以避免这个问题,
因此我们在上传脚本需要指定 transport模式;
iTMSTransporter -m upload -f xxx. itmsp -u <username> -p <password> -s <shortname> -v eXtreme -t DAV
后来忽然想起来,看看faslane里面是什么,撩一眼,有惊喜!
image.png
最后,附上 苹果爸爸的 Transporter 用户指南 和 fastlane里面对应的issues
网友评论