上传到运行Android模拟器的速度很慢

时间:2011-09-29 12:28:05

标签: android performance upload emulation apk

我已搜索但未找到针对我特定情况的任何疑问或答案。我有一台运行Windows 7的大量内存的快速新机器。我正在使用最新的Eclipse和Android SDK。

当我运行应用程序时,模拟器大约需要45秒才能启动(模拟器速度极快!)从运行启动到运行我的应用程序。

如果我然后更改应用程序并在仍在运行的模拟器上重新运行它,则时间会增加到70+秒!与人们所有其他投诉相反,在我的情况下,重新启动模拟器比使用现有实例更快。我不喜欢那样。

以下是时间:

2011-09-29 13:07:13 - hello Uploading hello.apk onto device 'emulator-5554'
2011-09-29 13:07:18 - hello Installing hello.apk...
2011-09-29 13:07:37 - hello Success!

在更改应用程序以重新加载后重新运行:

2011-09-29 13:08:18 - hello Uploading hello.apk onto device 'emulator-5554'
2011-09-29 13:09:16 - hello Installing hello.apk...
2011-09-29 13:09:24 - hello Success!

正如您所看到的,当模拟器刚刚启动时,上传到模拟器仅需5秒。运行模拟器需要将近一分钟!这是延长重新运行时间的原因。即使我在重新运行它之前在模拟器上卸载应用程序,这也不会改变。

关于我可以尝试解决这个问题的任何想法?它似乎是某种沟通问题,可能还有adb。

18 个答案:

答案 0 :(得分:30)

正如其他人发布的那样,只需在模拟器中点击一下即可大幅提升上传速度。我遇到了同样的问题,并用谷歌搜索答案,尝试这个技巧帮助了我。我正在运行2.3.3 AVD。

答案 1 :(得分:8)

我的新发现是一个小小的“黑客”,可以让您更快地上传。我意识到上传速度较快的情况是由我的互动引起的。因此,当我上传新的应用程序而没有主动使用模拟器时,它很慢。但是当我使用它(测试我的应用程序,退出,打开应用程序列表等)时,上传速度要快得多 - 在我的情况下大约是。 15秒而不是近2分钟。

所以我认为,问题在某种程度上是模拟器的性能设置。当我什么也不做的时候,它认为不需要大的性能,模拟器切换到某种经济状态,所以我的上传速度也很慢。

答案 2 :(得分:6)

更好的解决方案:

转到Run - >运行配置... - >目标标签 - >其他仿真器命令行选项。在那里添加:

-netspeed full -netdelay none

现在关闭模拟器并再次运行。

执行此操作后,上传时间从2分钟到8秒。


修改 我还发现退出Skype可以让我的模拟器上传速度更快。

答案 3 :(得分:5)

我有同样的问题,我正在开发一个类似4,6MB的Android应用程序,我需要50-60秒才能将它上传到模拟器并运行它。我不认为这是一个问题与沟通。 JVM很慢,这就是为什么你需要时间来上传你的apk并运行它。除了你开始在设备上测试你的应用程序之外,我认为你不能做任何事情。

答案 4 :(得分:5)

最快的模拟器你可以得到它是一台带有Android的VMWare机器。

在开发我的游戏Elastic World时,我遇到了同样的问题。在等待模拟器启动后的几分钟后,游戏最高运行速度为20 FPS。即使在低端Android设备上,我也可轻松获得60 FPS。上传速度非常慢。

所以我按照本网站的说明移动到VMWare Android机器:http://www.android-x86.org/documents/installhowto/

相同的游戏循环现在以250 FPS运行。 (它不能以这个速度播放,我将游戏限制在最高60 FPS,但是超越这个限制它可以提供250 FPS)

当Eclipse结束构建过程时,我只需等待1到5秒即可让游戏出现在虚拟机上。我正在运行一个旧的Core2Duo

答案 5 :(得分:5)

在上传应用程序时使用模拟器。我完全同意圆锥形帐篷。它将我的等待时间从4分钟减少到30秒。

答案 6 :(得分:4)

我知道这是一个古老的话题,但我认为我实际上已经解决了这个问题。

首先,您需要在没有netspeed参数的情况下启动模拟器,如下所示:

Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Object.GetType()
   at OpenQA.Selenium.Support.Extensions.WebDriverExtensions.ExecuteJavaScript[T](IWebDriver driver, String script, Object[] args)

一旦开始使用telnet登录模拟器。您可以从模拟器窗口的顶部获取端口,也可以运行adb设备并查看模拟器的序列,该模拟器位于模拟器端口(在大多数情况下通常为5554)

emulator -avd <name>

使用telnet登录后,您需要发出以下命令强制模拟器使用非常高的网络速度

telnet localhost 5554

然后,您可以使用以下命令在telnet中检查此设置

network speed 500000

哪个应该返回

network status

如果您现在尝试安装APK,您会发现性能会大幅提升。在我的情况下,它从260s到18s。

答案 7 :(得分:4)

这不是AVD的问题,它解决了这个问题,而且我不知道是否有办法在我们可以称之为参数的丛林中改变它。

简而言之,您可以在控制台命令中自行启动模拟器 使用以下内容:

emulator.exe -avd MyAVDName -netspeed full -netdelay none

参数很好,Eclipse为什么不使用它? 一些Eclipse编码器应该将其设为默认值。 另一种解决方案是切换到IntelliJ IDEA。它会用一个新的更好的IDE来光荣地取代旧的笨重的IDE。

答案 8 :(得分:2)

大声思考:

我不知道这个事实,但我想知道这种减速是否因为Android应用程序每个都有自己的Dalvik VM实例并作为单独的用户和进程运行。当您“思考”您已关闭应用程序时,Android可能会保持进程(绝对是VM)处于活动状态,以防您重新启动应用程序。这类似于Windows中的预取行为。

当您重新运行应用程序时,在修改源代码之后,Android可能必须销毁缓存的实例。在同一仿真器实例中重新部署的情况下,您注意到的额外延迟可能是由于正常关闭VM和应用程序而产生的成本。

答案 9 :(得分:1)

在早先的帖子中详细说明了圆锥形帐篷的内容,我发现如果我在上传阶段捣乱已经运行的AVD,它会更快地完成(5秒对60秒)并且我已经安装并运行在很短的时间内。这是4.0.3 AVD。尚未尝试其他人。

答案 10 :(得分:1)

尝试将模拟器RAM设置为1024。

答案 11 :(得分:1)

替代方式:

在您的电脑上设置FTP服务器以托管apk文件,现在您可以通过Android模拟器网页浏览器下载apk文件并使用adb直接安装应用程序。

在Android模拟器上安装samba客户端并在您的电脑上共享apk文件,然后将apk文件复制到模拟器并使用adb直接安装应用程序。

以上所有方式都比adb install快。

答案 12 :(得分:1)

我遇到了同样的问题,但我确信它与操作系统有关,因为我使用MacBook Pro和戴尔笔记本电脑上传了相同的应用程序,考虑到硬件规格,它更强大,但是上传时间在Mac上显着降低。

然而,在这款带有Windows的戴尔笔记本电脑上,上传到实际的Android设备的速度要快得多。

我认为它可能与之前没有安装的“Google USB驱动程序包”有关,但在安装之后,没有任何改变。

答案 13 :(得分:0)

愚蠢的问题 - 你在几个AVD上试过吗?你的AVD可能会以某种方式混乱。

答案 14 :(得分:0)

在模拟器上上传apk时,尽可能多地与模拟器进行交互,如果您在上传时按下模拟器的随机按钮,则会在上传5-6分钟之前上传,但现在只需要15 - 20秒。

答案 15 :(得分:0)

我也见过这个。假设您使用相同的AVD,这是有帮助的。 擦除AVD上的用户数据。完成此操作后,它会再次加载应用程序,几秒钟。

答案 16 :(得分:0)

在终端/控制台中,我使用adb -e shell进入AVD,然后转到上传apk的tmp目录cd /data/local/tmp,然后执行ls -l查看当前文件大小。我发现,如果我坐在那里继续点击箭头,请继续快速重复ls -l上传速度。随着文件大小的增加,您可以观察进度。

这可能类似于其他人提到的AVD中点击的效果。

我在Mac上。不确定它在Windows或Linux上是否相同。

答案 17 :(得分:0)

这可能适用于Windows,

启动任务管理器 - &gt;进程选项卡 - &gt;寻找emulator.exe,

右键单击并将优先级设置为高

不要忘记在完成工作后将其设置为正常。

还可以在不需要时关闭需要大量内存(如chrome和firefox)的不需要的应用程序。