为何我的 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 上传那么慢?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Java Servlet&JSP经典实例

Java Servlet&JSP经典实例

(美)佩里 / 朱涛江、邹红霞、林琪 / 中国电力出版社 / 2005-7 / 86.00元

本书将用于帮助指导Java web开发人员的日常任务,提供典型的web相关问题的快速解决方案。本书集中介绍了如何用Java初始化某些与web相关的任务,而不是教会读者如何使用Java语言,或者事无巨细地解释servlet和JSP API。书中包含了大量关于复杂的日常开发任务的技巧,这些技巧涵盖了许多与Servlet 2.4和JSP 2.0规范相关联的新特性,包括ServletRequestList......一起来看看 《Java Servlet&JSP经典实例》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换