【发布时间】:2014-04-01 20:26:51
【问题描述】:
adb push 在性能方面是可耻的。将几个兆上传到 AVD - 本质上,将其从一个磁盘文件复制到另一个文件中的块在同一个物理盒子上 - 不应该花那么长时间。通过网络拉取相同文件所需的时间更少,并且连接良好。
目标是模拟的,Intel 上的 ARM 等等。我知道了。但是请看这个时间:
- 将项目上传到 AVD:1 分 42 秒
- 通过 USB 将其上传到设备:7 秒
- 在同一个 AVD 上从 'Net 下载同一个应用程序:50 秒
什么样的本地机器连接速度是大互联网的两倍?
那是咆哮;现在的问题。一直在设备上调试不足,请问有什么解决方法吗?
我的 APK 主要是代码。我可以消除 一些 数据以加快速度,但这只是大约 6 MB 中的 1 MB。
一个激进的解决方案是对 ADB 用来与 AVD 通信的任何传输方式进行某种重写。现在,这听起来像是转发的 TCP 套接字;但一定要这样吗?我确信模拟器平台能够在主机和设备之间共享内存块和互斥体。
【问题讨论】:
-
问题可能不在于通信,而在于您正在与一个模拟系统交谈,该系统可能托管在资源受限的盒子上。几乎没有人将这种方法用于日常开发,但仅用于偶尔无法在他们可用的硬件设备上尝试的细节测试。
-
“几乎没有人”???我不信。无论如何,我在六个不同的移动平台上这样做:) 无论如何,在同一个模拟设备上使用相同的模拟 TCP/IP 堆栈从“网络”下载速度是原来的两倍。不,这在某种程度上是的交流。而且主机硬件相当不错。
-
是的,“几乎没有人”,因为模拟器慢而且要花钱。设备很便宜,而且更能代表用户的体验 - 因此 android 模拟器主要用于在特定版本匹配设备不可用或平台本身需要时临时测试某些东西以在安全设备上不可能的方式进行调整/探测。
-
不必如此。 Windows Mobile 模拟器在过去的表现与设备相当。 iOS 模拟器的运行速度与主机硬件相当,但这是不公平的比较。
-
那些不是模拟外部处理器架构,它们是在主机系统顶部的薄接口转换/特权陷阱层上运行应用程序代码。
标签: android android-emulator adb avd