概览
迭代速度是构建高质量 Android 利用的要害因素。解决的速度越快,应用程序的体验就越顺畅。这篇文章将和大家聊聊如何优化部署工夫。
部署 101
在 Android Studio 3.5 版本中,咱们在多个方面改良了迭代速度。开发者能够应用 Apply Changes: 依据代码构造,它能够替换更改的代码,并且重启以后 Activity; 如果代码和 Activity 生命周期无关,则会调用 “Apply Code Changes” 来仅替换代码而不会重启正在运行的 Activity。
△ Apply Changes 带来了两种全新的应用程序部署形式
基于 Apply Changes,Android Studio 3.5 新增了 “Delta Push”,在下次调用 Run 的时候,他只会把 APK 中批改的局部推送到设施上。应用程序会通过 sendfile(2) 命令将新旧资源发送给 Package Manager 并且在设施上进行重构,以此来达到 “ 零拷贝 ” 装置。
这些机制组合起来缩小了安装时间,不过要想得到较好的优化成果,开发者还须要留神设施数据线传输的速度和稳定性。
为什么 USB 传输速度很重要
无论 “Delta Push” 是否被启用,总会有数据传输到设施上。如果用的是模拟器,数据会通过 TCP/IP 进行传输,然而如果用的是真机则会用到 USB,USB 传输速度越快,等待时间越短,程序迭代速度也就越快。
好消息是 USB 传输速度当初越来越快了: 1996 年时,USB 仅可能提供 12 Mb/s 的传输速度,到了 2019 年 8 月公布 USB 4.0 版本的时候,曾经能够达到几个 Gb/s 的速度了。
△ 从 1996 到 2019,USB 传输速率从 1.5Mbps 进步到了 40GBps
如果不去深究,USB 其实是一个较为简单的技术。只有两台设施所反对的 USB 版本雷同,用 USB 连接线相连就能够用了,客户端层不必作出任何批改,用起来大海捞针。
对开发者来说,领有高速的 USB 传输至关重要。传输速度达到肯定水平当前,USB 传输速度和程序迭代速度就会关联起来,手机存储的写入速度可能无奈达到 USB 3.2 的 20Gb/s,不过还是比 USB 2.0 要快,所以如果您装置调试一个 50M 大小的 APK,USB 3.0 协定的传输速度会比应用 USB 2.0 协定快 25%,一天下来能节省下的工夫应该不少:
△ 装置一个 50 MB 的利用,USB 3.0 比 USB 2.0 快 30%
但坏消息是,USB 3.0 的设施经常以 USB 2.0 的速度在传输数据。有两种形式会导致这种状况,要么线呈现问题,要么集线器呈现问题。
防止升高 USB 连贯的传输速度
有三个根本准则能够防止 USB 降速的问题:
- 找蓝色接口
- 理解 USB-C
- 抉择适合的 USB 集线器
找蓝色接口
如果您用的是 Type-A 或者 Type-B 接口,那就简略了。USB 3.0 规范里倡议通过色彩来辨别专门连贯到 USB 3.X 硬件的接口。如果您看到上面图片中的接口,那么阐明您接对接口了。
USB Type-A:
△ 左侧是 USB Type-A 母口,右侧是 USB Type-A 公口
USB Type-B:
△ 左侧是 USB Type-B 母口,右侧是 USB Type-B 公口
理解 USB-C
USB-C 接口和 USB 3.1 简直同时公布。很多人认为他们之间有分割,然而其实他们毫不相干。
USB 2.0 数据线中有四根线缆。其中两根用于供电,另外两根用于数据传输。
△ 一条 USB 2.0 数据线中含四根线缆
USB 3.X 数据线齐全向下兼容。它含有两条线缆用于 USB-2 信号传输,还有两组双绞线用于 USB-3 的上行和上行数据。
△ USB 3.0+ 数据线含有 8 根线缆
从传输数据角度看,USB Type-C 只是一种新的接口状态,并且它不会探测线缆连贯的数量,换句话说就是,它并不关怀另一端的传输协定是高速的 USB 3.X 协定还是绝对低速的 USB 2.0 协定,加之其造价低廉,导致很多数据线用的尽管是 Type-C 接口,但数据传输还是走 USB 2.0 的协定。
△ Nexus 6P 标配的 Type-A 转 C 数据线
上图所示是 Nexus 6P 手机标配的数据线,这台手机是应用 USB 2.0 协定,并通过 USB Type-C 接口连贯,这些数据线中只有 4 根线缆。
如果您用的是这样的数据线接入开发环境的话,很有可能您在用低速连贯 USB-3 兼容设施。起因是在开发过程中,如果您始终在应用 Nexus 6P 的这条数据线连贯其余不同的手机 (局部手机的 Type-C 接口可能会应用 USB 3.0 协定,而这条数据线最高只能有 2.0 协定的速度),那您的整体开发体验和开发效率可能会升高不少。
所以当应用 USB Type-C 接口的时候,确保下面有 SS (SuperSpeed) 的标记。
△ USB Super-Speed 标记
对于手机接口应用哪个协定,能够查看设施的相干参数。即便是近期公布的手机也有可能应用 2.0 低速接口,比方 Pixel 3a 和 Pixel 3a XL。
抉择适合的 USB 集线器
最初一个要防止的错误操作就是防止应用较差品质的 USB 集线器产品 —— 它的成果和用错线是一样的。USB 集线器能够把您所有的设施都串联到一起 (从键盘、鼠标、到开发设施)。然而很多集线器产品都是用于一些轻量级低速设施,比方键盘、鼠标和耳机,这些设施仅须要 USB 2.0 连贯。
确认一下您的 USB 集线器是否反对 USB 3.0,看一下它的接口是不是蓝色的,如果接口只有 Type-C,能够看一下说明书。
实用工具
如果您仍有疑虑,能够通过上面命令看一下您的 USB 设施和宿主机之间的速度。
- Mac 零碎: system_profiler SPUSBDataType
- Linux 零碎: lsusb -vvv
- Windows 零碎: USBView.exe