为何我的 Fastlane 上传那么慢?

栏目: 服务器 · 发布时间: 5年前

内容简介:最近更新:21st 六月, 2019使用自动化工具处理 iOS 的使用

最近更新:21st 六月, 2019

自动化

使用自动化 工具 处理 iOS 的 TestFlight 分发,是一件很惬意的事情,它能帮你节省很多时间,减少大量人工干预——尤其是像这种需要等很久才需要人工操作一下的事情,虽然并不会让你觉得很累,但大量的时间就这样浪费掉了。

使用 fastlane 一键编译、上传,然后等待苹果服务器处理完成,全自动发布 TestFlight ,本来是一个很棒的操作,但由于网络环境的变化,我的 fastlane 上传速度变得越来越慢,最终慢到 100M 带宽的网络中,上传速度只有 10 KB/s。

重置 itmstransporter

由于 fastlane 实际上是使用 itmstransporter 来进行上传的,那么如果你遇到上传相关错误,可以尝试重置这个工具(当然,在我这个情况下就无法解决问题)

cd ~  
mv .itmstransporter/ .old_itmstransporter/  
"/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/itms/bin/iTMSTransporter"

参考文献:https://stackoverflow.com/questions/47433541/app-store-upload-is-really-slow-and-hogging-my-internet-connection

itmstransporter 的三种传输模式

实际上,itmstransporter 是有三种上传模式的,这也就是为什么你在使用 Xcode 手动上传 app 时,会有一个步骤叫做“协商上传模式”。但显然,这个协商功能没那么“智能”。

如果你依赖 itmstransporter 的自动选择(默认就是如此),那么最快的上传模式会最先被使用,但一旦这个模式失败,itmstransporter 就会转用其他备用方案了 (实际上如果再试试,也许还是能用的)

DAV

这个模式是最慢的模式,其实就和直接 http 上传没什么区别(会比web上传更慢一些),如果你的网络质量比较差,延迟高等,那么落到 dav 是没跑的。

但是,有一点,如果你在公司等有防火墙的网络环境,那么 dav 可能是唯一不被封锁的上传方式——它不需要特殊端口。

Signiant

这是一个 SaaS 加速传输协议,官方宣称比 http 传输快 200%,使用这个协议则需要防火墙开启 TCP 和 UDP 的 44001 端口,并且 UDP 攻击防护有可能会对 signiant 造成影响。

Aspera

Aspera 在业内极其出名,很多企业网络、云平台都在使用使用 Aspera 家的 fasp 协议快速传输数据,它在绝大多数网络条件下拥有稳定高速传输,“通常需要 26 小时将一份体积为24GB的文档传输至世界的另一端,而 Aspera 能做到只需 30 秒”。

同样,它也要求防火墙开启 TCP 和 UDP 的 33001 端口,并且 UDP 攻击防护有可能会对 Aspera 造成影响。

配置

我们的目的就是要让 fastlane 调用 itmstransporter 时使用 Aspera 进行上传,避免使用其他两个协议,如果是直接使用 itmstransporter ,你大可以直接设置参数,但使用 fastlane 该怎么办呢?

在你的 upload_to_testflight 上一行,写 ENV [ "DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS" ] = "-t Aspera" 即可,这样,就设定了环境变量,让 itmstransporter 只使用 Aspera 进行上传,一旦失败,则不会再使用其他方式进行尝试,这样在上传时,你就会遇到:

The session's status is FAILED and the error description is 'failed to authenticate (19)'

不过,如果你耐心等待,就会发现上传并没有停止,最终,你会得到:

Although errors occurred during execution of iTMSTransporter, it returned success status.

另外,上传的速度也恢复到了巅峰。

如果你真的遇到 Aspera 被防火墙阻止而无法上传的情况,那么就吧 Aspera 改成 DAV。

速度优化

默认来说,Aspera 不会对上传进行限速,也就是说它会尽可能利用你的上传带宽,但这样有一个弊端,那就是上传的时候会导致网络上行带宽被占满,其他人、其他软件都无法联网。所以给 Aspera 增加一个带宽限制是个不错的选择(另外,据说加了带宽限定后速度反而是略有提升的)。

总之,在 "-t Aspera" 中增加 - k 参数,后接你期望的带宽,单位是 bit per second,即 - k 10000 就是 10M 带宽, - k 200000 就是 200M 带宽,具体多少合适,这需要你自己去实际测试,这也和你的路由器性能有关。

比如,我要设置 20M 带宽,那么最终的代码就是这样的:

ENV["DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS"] = "-t Aspera -k 20000"

另: - k 这个参数对 signiant 模式同样适用,单位和规则都是一样的。

参考文献

Transporter User Guide 1.13


以上所述就是小编给大家介绍的《为何我的 Fastlane 上传那么慢?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Building Social Web Applications

Building Social Web Applications

Gavin Bell / O'Reilly Media / 2009-10-1 / USD 34.99

Building a social web application that attracts and retains regular visitors, and gets them to interact, isn't easy to do. This book walks you through the tough questions you'll face if you're to crea......一起来看看 《Building Social Web Applications》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具